C# WPF:绑定到DataGrid中行的SelectedItem
我对WPF很陌生。我试图绑定到DataGrid中的一行属性,以便在单击该行时设置该属性。绑定到DataGrid的ItemsSource是类型为Field的对象的ObservableCollection 我已尝试绑定到DataGrid上的SelectedItem属性,但未调用该属性。我使用几乎相同的代码绑定到组合框的SelectedItem,这很好。有什么我不知道的区别吗C# WPF:绑定到DataGrid中行的SelectedItem,c#,wpf,xaml,datagrid,C#,Wpf,Xaml,Datagrid,我对WPF很陌生。我试图绑定到DataGrid中的一行属性,以便在单击该行时设置该属性。绑定到DataGrid的ItemsSource是类型为Field的对象的ObservableCollection 我已尝试绑定到DataGrid上的SelectedItem属性,但未调用该属性。我使用几乎相同的代码绑定到组合框的SelectedItem,这很好。有什么我不知道的区别吗 <ComboBox ItemsSource="{Binding RecordTypes}" SelectedItem="
<ComboBox ItemsSource="{Binding RecordTypes}" SelectedItem="{Binding SelectedRecordType}" ...
<DataGrid ItemsSource="{Binding Fields}" SelectedItem="{Binding SelectedField}" ...
(稍后我将使用自动属性,它只是当前设置为这样,以便在设置属性时可以中断)
我不确定这是否有区别,但DataGrid由2个DataGridTextColumns和一个DataGridTemplateColumn组成,其中包含一个复选框
有人有什么想法吗?如果有任何建议,我将不胜感激
为了确认,我想要监听行的单击的原因是,每当单击行时,我都可以选中复选框。如果有更好的解决方案,请告诉我。您需要将其设置为双向绑定:
SelectedItem="{Binding SelectedField,Mode=TwoWay}"
将视图中的更改(用户选择一项,SelectedItem
changes)传播回viewmodel(“SelectedField”属性)
另外,正如@KevinDiTraglia指出的,您需要确保viewmodel属性
SelectedField
是public,而不是private,否则绑定将无法访问getter/setter。我从未绑定到标记为private的属性,我相信它必须是公共财产才能绑定到UI。您的ObservableCollection是否也用作类型字段的对象的ItemsSource?我认为您还需要设置列绑定。请检查您的输出窗口是否存在任何绑定错误。我不确定,但您需要为您的财产实现INotifyPropertyChanged。您可以看出我是在凌晨2点尝试此操作的,就像我将我的财产标记为私有一样!难怪它不起作用!谢谢你的回复。
SelectedItem="{Binding SelectedField,Mode=TwoWay}"