【发布时间】:2025-12-18 15:30:01
【问题描述】:
编辑
解决方案实际上是对 SelectedItem、SelectedValue 和 SelectedValuePath 属性的正确设置。
<ComboBox
Grid.Column="1"
Padding="5"
DisplayMemberPath="PositionName"
IsSynchronizedWithCurrentItem="False"
ItemsSource="{Binding Positions, Mode=OneWay}"
SelectedItem="{Binding SelectedOperatorPosition, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"
SelectedValue="{Binding SelectedOperatorPosition.PositionName}"
SelectedValuePath="PositionName" />
问题
我正在尝试使用 MVVM 模式将 ComboBox SelectedValue 与 DataGrid SelectedItem 绑定。
ComboBox ItemSource 是 Shifts 属性。我希望它的 SelectedValue 与 SelectedShift 属性绑定,每次用户从 DataGrid 中选择另一个 OperatorModel 时都会更新该属性。
尽管 SelectedOperator 设置器将 SelectedShift 值设置为 SelectedOperator.Shift,但 ComboBox 不会更新。
View
Debugging ViewModel Property setter
我的视图模型:
private Operator selectedOperator;
public Operator SelectedOperator
{
get
{
return selectedOperator;
}
set
{
selectedOperator = value;
if (selectedOperator != null)
{
SelectedShift = selectedOperator.Shift;
}
OnPropertyChanged(nameof(SelectedOperator));
}
}
private Shift selectedShift;
public Shift SelectedShift
{
get
{
return selectedShift;
}
set
{
selectedShift = value;
OnPropertyChanged(nameof(SelectedShift));
}
}
XAML:
<ComboBox
Grid.Column="1"
Padding="5"
DisplayMemberPath="Name"
ItemsSource="{Binding Shifts}"
SelectedValue="{Binding SelectedShift}"
SelectedValuePath="Name" />
【问题讨论】: