我已经阅读了相关问题,但是我的问题仍然存在。 我试图从组合框中选择一个数据库连接,如果连接失败,请将组合值切换回上一个。 代码:
public string SelectedConnStringValue
{
get { return _selectedConnStringValue; }
set
{
if (!DBConn.Instance.Open(value))
{
System.Windows.MessageBox.Show("Attempt failed", "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
DBConn.Instance.Close();
_selectedConnStringValue = value;
DefaultConf.Instance.DefaultConnectionStringName = value;
}
OnPropertyChanged("SelectedConnStringValue");
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
}
XAML
<ComboBox x:Name="serversComboBox" SelectedValuePath="Name" DisplayMemberPath="Name" Width="120" Margin="672,0,0,0" Height="25"
ItemsSource="{Binding Path=Connections}" Text="{Binding SelectedConnStringValue}"/>
问题是当我尝试放置错误的连接字符串时。然后,我想将组合值重新选择为上一个,从而根本不更新它,但是它不起作用。我试图做RaisePropertyChanged(“ SelectedConnStringValue”); 而不是OnPropertyChanged,但它什么都不做
答案 0 :(得分:0)
使用SelectionChanged
事件,并将SelectedItem
分配给先前的selectedItem。
在给定方案中,属性已绑定到Dependency属性,并且值在Dependency Property
中已更改。除非再次分配,否则设置器将无法还原control/combobox
中的值。
private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
var comboBox = sender as ComboBox;
var selctedItem = comboBox?.SelectedItem as TestModel;
if (selctedItem != null && selctedItem.Equals("Test2"))
{
comboBox.SelectedItem = previousSelected;
}
}