【发布时间】:2014-05-13 07:23:27
【问题描述】:
在每个 DataGridColumnHeader 上,我都有一个用于打开弹出窗口的按钮。作为参数,它将列的绑定属性名称发送到我的 ViewModel 中的 ICommand。
这适用于任何 DataGridTextColumn,但是当涉及 DataGridComboBoxColumn 时,结构是不同的。
我将如何解决这个问题?
<Button Command="{Binding DataContext.OpenFilterCommand,
RelativeSource={RelativeSource AncestorType=UserControl}}"
CommandParameter="{Binding Column.Binding.Path.Path,
RelativeSource={RelativeSource Mode=TemplatedParent}}"/>
问题列定义
<DataGridComboBoxColumn Header="Company" >
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.CompanyCollection}"/>
<Setter Property="IsReadOnly" Value="True"/>
<Setter Property="SelectedValue" Value="{Binding Company}"/>
</Style>
</DataGridComboBoxColumn.ElementStyle>
<DataGridComboBoxColumn.EditingElementStyle>
<Style TargetType="ComboBox">
<Setter Property="ItemsSource" Value="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}, Path=DataContext.CompanyCollection}"/>
<Setter Property="SelectedValue" Value="{Binding Company}"/>
</Style>
</DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>
【问题讨论】:
-
在这种情况下您要传递哪个属性名称?
ItemsSource姓名或SelectedValue姓名? -
公司,所以 SelectedValue 或其中任何一个。
-
我已经添加了一个答案。看看有没有帮助。
标签: wpf xaml mvvm wpfdatagrid