我正在尝试将ComboBox绑定到来自对象的数据。该对象包含一个允许状态的列表和一个表示其当前值的字符串。我遇到的问题是,当表单加载时,它正确地将组合框的值设置为其当前值,但我无法将值更改为其他任何值。如果我单击下拉列表并选择一个新值,它将关闭下拉列表但保留原始值。
组合框在DataGrid中各占一行,ComboBox包含在DataGrid的RowDetailsTemplate中。
XAML:
<ComboBox
x:Name="cmbStatus"
ItemsSource="{Binding Path=AllowedStateValues}"
SelectedItem="{Binding Path=State}"
Height="20"
Width="100" />
答案 0 :(得分:1)
尝试将模式绑定到 TwoWay 。如果这不起作用,请使用 PresentationTraceSources.TraceLevel 属性 High ,以获取完整的详细信息。
答案 1 :(得分:0)
州宣告:
private string _state;
public string State {
get { return _state; }
set
{
if (AllowedStateValues != null && AllowedStateValues.Contains(value))
{
_state = value;
}
}
}
我在更改时没有引发事件但是当你更改组合框时它似乎也没有调用setter
答案 2 :(得分:0)
我遇到了同样的问题。事实证明我的问题在于我的Equals覆盖被绑定的项目。检查并确保不会将多个不相等的对象进行比较。