对于KeyBinding,我使用Binding在Xaml中设置CommandParameter。在Binding中有一个转换器设置。
当我将参数绑定到属性(INPC)时,绑定系统使用Converter重新评估。
但是,当我将参数设置为可观察集合时,在CollectionChanged上绑定系统不会重新评估。因此,我收到了初始转换值。
我是否可以触发CommandParameter在CollectionChanged上重新进行重新评估。
<TextBox Grid.Row="0" Text="{Binding MyParameter}">
<TextBox.InputBindings>
<KeyBinding Gesture="CTRL+D"
Command="{Binding MyCommand}"
CommandParameter="{Binding MyParameter,
Converter={StaticResource converter}}">
</KeyBinding>
<KeyBinding Gesture="CTRL+T"
Command="{Binding MyCommand}"
CommandParameter="{Binding ChangedValuesCollection,
Converter={StaticResource CollectionConverter}}">
</KeyBinding>
</TextBox.InputBindings>
</TextBox>
在上面的代码中,我设置了一个viewmodel(datacontext)。但我打算将命令参数绑定到Grid的SelectedRows集合。
答案 0 :(得分:1)
如果您只想将DataGrid的选定项目作为命令参数,则可以直接绑定到它。假设Datagrid和Textbox在同一个可视树中
<KeyBinding Gesture="CTRL+T"
Command="{Binding MyCommand}"
CommandParameter="{Binding SelectedItems, ElementName="myDataGrid"}">