我在网格中有以下ComboBox:
<ComboBox ItemsSource="{Binding Categories}">
<ComboBox.SelectedItem>
<Binding Path="SelectedCat" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<MyValidation/>
</Binding.ValidationRules>
</Binding>
</ComboBox.SelectedItem>
</ComboBox>
Categories是一个ObservableCollection,而SelecetedCat的定义如下:
private string m_selectedCat;
public string SelectedCat
{
get { return m_selectedCat; }
set
{
m_selectedCat = value;
if (value == "--reset--")
{
var dlg = new CatDialog();
var res = dlg.ShowDialog();
if (res == true)
{
var newCat = dlg.Text;
Categories.Add(newCat);
SelectedCat = newCat;
}
}
NotifyPropertyChanged("SelectedCat");
}
}
现在,当我选择&#34; - 重置 - &#34;从组合框中,CatDialog显示让我插入一个新的Cat字符串,我必须在Categories属性中插入,然后选择它。
问题是在Category.Add(newCat)之后立即召回了setter;被执行。那时,value关键字仍然是&#34; - reset - &#34;并且第二次调用该对话框,而我已经提供了所需的Cat。
有什么方法可以解决这个问题吗?
此致 FZ