gpt4 book ai didi

wpf - 组合框以两种方式绑定(bind)到所选项目

转载 作者:行者123 更新时间:2023-12-02 04:02:56 25 4
gpt4 key购买 nike

我花了相当多的时间来调查这个问题。任何帮助将不胜感激。

我有一个像这样声明的 WPF ComboBox。

<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition/>
<RowDefinition/>
</Grid.RowDefinitions>
<Button Click="Button_Click">Click Me</Button>
<ComboBox ItemsSource="{Binding ListOfValues}" SelectedItem="{Binding MySelectedItem}" Grid.Row="1">
</ComboBox>
<CheckBox IsChecked="{Binding IsValueChecked}" Grid.Row="2"></CheckBox>
</Grid>

在我的代码后面,我有这些属性,并且我正在实现 INotifyPropertyChanged

    public Window1()
{
InitializeComponent();
ListOfValues = new List<string>();
ListOfValues.Add("apple");
ListOfValues.Add("ball");
ListOfValues.Add("cat");
ListOfValues.Add("dog");
MySelectedItem = "cat";
IsValueChecked = true;
}

public List<string> ListOfValues
{
get
{
return _listOfValues;
}
set
{
_listOfValues = value;
OnPropertyChanged("ListOfValues");
}
}

public string MySelectedItem
{
get
{
return _selectedValueString;
}
set
{
_selectedValueString = value;
OnPropertyChanged("MySelectedItem");
}
}

public bool IsValueChecked
{
get
{
return _isVlaueChanged;
}
set
{
_isVlaueChanged = value;
OnPropertyChanged("IsValueChecked");
}
}
private void Button_Click(object sender, RoutedEventArgs e)
{
MySelectedItem = "dog";
IsValueChecked = !IsValueChecked;
}

按钮单击事件更改绑定(bind)到组合框的 SelectedItem 属性的 MySelectedItem。但是单击按钮后,组合框中没有选择任何内容。我不明白为什么。即使我明确设置 Mode=TwoWay,也会发生这种情况。请建议。请注意,我的数据上下文设置为 self,因此我已通过添加复选框确认数据绑定(bind)正确发生

编辑:请注意,这发生在示例 WPF 项目中。但我希望这个功能发挥作用的原始项目是一个 winforms 应用程序。我正在使用 elementhost 嵌入我的 wpf 控件。这有什么区别吗?

最佳答案

所选项目需要设置为与其绑定(bind)的列表中的对象。将其设置为具有匹配值的字符串将不起作用。所以试试这个:

foreach(string animal in ListOfValues)
{
if( animal == "dog")
this.MySelectedItem = animal;
}

关于wpf - 组合框以两种方式绑定(bind)到所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9030877/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com