【发布时间】:2017-11-24 01:21:17
【问题描述】:
在我的视图中,我有一个DataGrid,它存储了 2 种降序类型的对象。每行都有一个带有命令的按钮连接到 ViewModel。在 ViewModel 中,我需要找出选择了哪种类型的对象。
问题是从 ViewModel 中的Execute 命令方法访问DataGrid 的SelectedItem 属性的最佳且简单的方法是什么?
到目前为止,我是这样做的:
var window = Application.Current.Windows.OfType<Window>()
.SingleOrDefault(x => x.IsActive);
var dataGrid = (DataGrid) window.FindName("MyGridName");
...
更新 - Xaml:
<DataGrid Name="MyGridName" ItemsSource="{Binding Elements}"
AutoGenerateColumns="False" CanUserAddRows="False"
CanUserDeleteRows="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTemplateColumn Width="auto">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="OptionsBtn" Margin="5" Width="auto"
Height="30" Content="Options"
Command="{Binding ElementName=ElementsViewWindow,
Path=DataContext.ShowOptionsMenuCommand}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
【问题讨论】:
-
将您的 Grid 的
SelectedItem绑定到某个 VM 属性或使用CommandParameters并停止您正在尝试做的任何事情... -
显示 Xaml 中的命令以及如何绑定它。我很高兴向您展示如何采用这种命令参数方法!
-
<Button Name="OptionsBtn" Margin="5" Width="auto" Height="30" Content="Options" Command="{Binding ElementName=ElementsViewWindow, Path=DataContext.ShowOptionsMenuCommand}" CommandParameter="{Bidning .}"/>
标签: c# wpf mvvm viewmodel dependency-properties