我是WPF的新手。我正在尝试绑定到DataGrid中的一行属性,以便在单击该行时设置该属性。绑定到DataGrid的ItemsSource是Field类型的ObservableCollection对象。
我试图绑定到DataGrid上的SelectedItem属性,但是没有调用该属性。我使用几乎相同的代码绑定到ComboBox的SelectedItem,这工作正常。我不知道有什么不同吗?
<ComboBox ItemsSource="{Binding RecordTypes}" SelectedItem="{Binding SelectedRecordType}" ...
<DataGrid ItemsSource="{Binding Fields}" SelectedItem="{Binding SelectedField}" ...
在我的ViewModel中:
private Field SelectedField
{
get
{
return _selectedField;
}
set
{
_selectedField = value;
}
}
(稍后我将使用自动属性,它目前只是设置为这样,以便在设置属性时我可以中断。)
我不确定它是否有所作为,但DataGrid由2个DataGridTextColumns和一个DataGridTemplateColumn组成,其中包含一个复选框。
有没有人有任何想法?我真的很感激任何建议。
要确认,我想要收听行的单击的原因是,只要单击一行,我就可以选中复选框。如果有更好的解决方案,那么请告诉我。
答案 0 :(得分:1)
您需要将其设为双向绑定:
SelectedItem="{Binding SelectedField,Mode=TwoWay}"
将视图中的更改(用户选择项目,SelectedItem
更改)传播回viewmodel(“SelectedField”属性)。
另外,正如@KevinDiTraglia指出的那样,你需要确保viewmodel属性SelectedField
是 public ,而不是私有,否则绑定将无法访问getter /设定器。