gpt4 book ai didi

c# - WPF中如何同步ListBox SelectedItem和焦点项?

转载 作者:太空宇宙 更新时间:2023-11-03 18:07:13 24 4
gpt4 key购买 nike

我将按钮创建为列表框项。使用键盘快捷键,所选项目/按钮将更改为第一个字符与按下的键相同的按钮。问题是焦点项目(虚线矩形)不会与所选项目同步。如果我们使用键盘箭头,则不存在此问题。缩短的代码是:

        <ListBox x:Name="ListBoxRef" 
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
DataContext="{Binding Path=ListViewSource}" IsSynchronizedWithCurrentItem="True"
ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Tag="{Binding}" IsTabStop="False"
Command="{Binding ElementName=UserControlTypeSelectionView, Path=DataContext.SelectCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource Self}}">
<Button.Template>
<ControlTemplate>
<TextBlock Text="{Binding Path=Name}" />
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>

How do you programmatically set focus to the SelectedItem in a WPF ListBox that already has focus? ,解决方案是使用 Focus 方法并在 C# 端。

是否可以在 MVVM 中仅使用 XAML?

最佳答案

我从同事那里找到了答案。通过使用当前选定项 setter (IsSelected 属性)触发 FocusManager.FocusedElement,问题得以解决。

        <ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<!-- Edited: add pushpraj code to hide the dashed rectangle on focused item -->
<Setter Property="FocusVisualStyle" Value="{x:Null}" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding RelativeSource={RelativeSource Self}}" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>

关于c# - WPF中如何同步ListBox SelectedItem和焦点项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25238991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com