我正在研究一个非常简单的超选项集,它由在设计时创建的两个项目(字符串)组成。选项集值(通过绑定源)绑定到视图模型中的字符串属性。数据源更新模式设置为"属性已更改"。
问题是在整个选项集失去视图中的焦点之前,视图模型不会更新。因此,如果我在两个值之间来回更改,则属性不会获得更改,因此控件的验证将不起作用(因为数据未更新)。
我觉得自己很愚蠢,因为这应该非常简单。我做错了什么?:D
干杯!
我用 NetAdvantage 2012 Volume 2 对此进行了测试,发现在更改通过 UI 选择的选项时,我绑定了 UltraOptionSet 的对象中的属性资源库会在属性更改时更新。 这是我使用的代码:
public partial class Form1 : Form
{
TestObject to;
public Form1()
{
InitializeComponent();
to = new TestObject() { Prop = "Two"};
Binding optionBinding = new Binding("Value", to, "Prop");
optionBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
this.ultraOptionSet1.DataBindings.Add(optionBinding);
}
}
public class TestObject
{
private string prop;
public string Prop
{
get
{
return prop;
}
set
{
System.Diagnostics.Debug.WriteLine("Current value :" + prop + " is being set to " + value);
if (value != prop) prop = value;
}
}
}
我建议您验证您是否在绑定上正确设置了数据源更新模式。 如果这样做,您可能需要检查是否有可以进行测试的 NetAdvantage 控件的更高服务版本。