这是我的xaml的一部分:
<DataGrid ItemsSource="{Binding listImages, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" Name="dataGrid1" Height="341" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,10,0" Width="225" CanUserResizeRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserAddRows="False" IsHitTestVisible="True" OverridesDefaultStyle="False" SelectedIndex="0" SelectionUnit="FullRow" SelectionMode="Single">
<DataGrid.InputBindings>
<KeyBinding Key="a" Command="{Binding Path=KeyPressed}"/>
<KeyBinding Key="s" Command="{Binding Path=KeyPressed}"/>
<KeyBinding Key="d" Command="{Binding Path=KeyPressed}"/>
</DataGrid.InputBindings>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{Binding rowColor}"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ImageName" Binding="{Binding imageName}" Width="112" />
<DataGridTextColumn Header="Tag" Binding="{Binding tag}" Width="110" />
</DataGrid.Columns>
我想加载一个.xaml,其中只定义了此数据网格,或仅更好地定义 KeyBindings 。这是因为用户可以更改哪些键可以绑定。
考试:汤姆想要使用键z,x,c而不是a,s,d。为此,他编辑默认的xml / xaml(位于某处)并更改KeyBinding的 Key 参数并加载它。
新的xml / xaml将如下所示:
<DataGrid ItemsSource="{Binding listImages, UpdateSourceTrigger=PropertyChanged}" AutoGenerateColumns="False" Name="dataGrid1" Height="341" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Margin="10,10,10,0" Width="225" CanUserResizeRows="False" CanUserResizeColumns="False" CanUserReorderColumns="False" CanUserAddRows="False" IsHitTestVisible="True" OverridesDefaultStyle="False" SelectedIndex="0" SelectionUnit="FullRow" SelectionMode="Single">
<DataGrid.InputBindings>
<KeyBinding Key="z" Command="{Binding Path=KeyPressed}"/>
<KeyBinding Key="x" Command="{Binding Path=KeyPressed}"/>
<KeyBinding Key="c" Command="{Binding Path=KeyPressed}"/>
</DataGrid.InputBindings>
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{Binding rowColor}"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ImageName" Binding="{Binding imageName}" Width="112" />
<DataGridTextColumn Header="Tag" Binding="{Binding tag}" Width="110" />
</DataGrid.Columns>
可以在MVVM模式之后执行此操作吗?
答案 0 :(得分:0)
我不会将用户的键绑定选项保留为XAML。 Binding
标签等对用户毫无意义。
而是以其他更友好的方式坚持键绑定,甚至可以是简单的ini风格文本文件,例如:
Command1Key=z
Command2Key=x
Command3Key=c
将它们加载到ViewModel后,您可以将它们作为InputBindingCollection
属性公开给视图,然后视图可以绑定到该属性。