我在ListView
(而不是文本)中显示按钮。我这样做是因为我必须从数据库加载产品并在我的 GUI 上拥有相同数量的按钮。整个 GUI 需要通过键盘完全控制,所以我添加KeyBindings
了这些按钮。问题是这些按钮需要聚焦两次。首先是项目的焦点,其次是按钮的焦点和我的KeyBinding
作品。这对用户来说必须更容易完成,我不知道如何实现聚焦按钮的方法,因为这些按钮没有名称(动态内容)。
这是我的 XAML:
<ListView ItemsSource="{Binding Produkte}" Grid.Row="0">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid IsItemsHost="True" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.ItemTemplate>
<DataTemplate>
<UniformGrid>
<Button Template="{DynamicResource ButtonBaseControlTemplate1}" Style="{StaticResource ButtonStyle1}" Command="{Binding DataContext.BestellenCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}">
<Button.Background>
<ImageBrush ImageSource="{Binding PictureUrl}" />
</Button.Background>
<DockPanel>
<TextBlock Text="{Binding Bezeichnung}" FontSize="30" DockPanel.Dock="Top" HorizontalAlignment="Center" Margin="0, 25, 0, 0"/>
<TextBlock Text="{Binding Preis}" FontSize="15" HorizontalAlignment="Left" Margin="5"/>
<TextBlock Text="{Binding Shortcut}" FontSize="15" HorizontalAlignment="Right" DockPanel.Dock="Bottom" VerticalAlignment="Bottom" Margin="5"/>
</DockPanel>
<Button.InputBindings>
<KeyBinding Key="{Binding Shortcut}" Command="{Binding DataContext.BestellenCommand, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" CommandParameter="{Binding}" />
</Button.InputBindings>
</Button>
</UniformGrid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我希望您有使用 KeyBindings 进行动态控件的经验。提前致谢。
问候,斯特凡