Gia*_*cci 4 c# silverlight binding mvvm datagridtemplatecolumn
我正在开发一个Silverlight应用程序,它广泛使用Prism,MVVM模式和MEF.出于几个原因,我选择遵循View-first方法.
在其中一个视图中有一个DataGrid,该网格的一个列是DataGridTemplateColumn,它只有一个Button.
我想在Button上定义一个Command和一个CommandParameter.Command应该是ViewModel的DelegateCommand.CommandParameter应该是直接来自dataGrid的SelectedItems列表.
我已经尝试了几种方法来执行此操作,但Command或CommandParameter都为null.
它遵循我最初编写的代码:
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="15" Height="15" Content=">"
Command="{Binding UpdateSearchParametersCommand}"
CommandParameter="{Binding SelectedItems, ElementName=dataGrid}">
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我最好的方法是什么?
提前谢谢,Gianluca.
Rac*_*hel 10
您当前的绑定指向DataGridRowItem.UpdateSearchParametersCommand.您需要将其更改为指向DataGrid.DataContext.UpdateSearchParametersCommand
<sdk:DataGrid x:Name=dataGrid>
<sdk:DataGridTemplateColumn>
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Width="15" Height="15" Content=">"
Command="{Binding DataContext.UpdateSearchParametersCommand, ElementName=dataGrid}"
CommandParameter="{Binding SelectedItems, ElementName=dataGrid}">
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid>
Run Code Online (Sandbox Code Playgroud)
你们中的许多人都试图帮助我解决这个问题。谢谢你。不幸的是,提供的答案大多与 WPF 有关。
这是我解决问题的方法:
<helpers:BindingHelper.Binding>
<helpers:BindingList>
<helpers:RelativeSourceBinding TargetProperty="Command" Path="DataContext.ToggleDataArchiveInheritanceCommand" RelativeMode="FindAncestor" AncestorType="ChildWindow" />
</helpers:BindingList>
</helpers:BindingHelper.Binding>
Run Code Online (Sandbox Code Playgroud)
好吧,这来自同一个应用程序的另一个点,但原理是一样的。如果在 a 内部定义了绑定,则在 Silverlight 中访问通常超出范围的其他元素(因为它们不是 DataTemplate 的一部分)的唯一方法是遍历 xaml 对象树。这就是 BindingHelper 的作用。
在这里发帖是因为我希望这些信息对其他人有用。
干杯,
詹卢卡
| 归档时间: |
|
| 查看次数: |
9855 次 |
| 最近记录: |