gpt4 book ai didi

.net - WPF:当其中一个控件获得焦点时,如何选择 ListBoxItem?

转载 作者:行者123 更新时间:2023-12-04 06:18:19 65 4
gpt4 key购买 nike

查看下图,您会看到第四个 ListBoxItem 中的 TextBox 具有 Focus 和 KeyboardFocus,而第二个 ListBoxItem 被选中。

我知道我可以捕获文本框的 GotFocus 事件,获取它的 DataContext,并设置绑定(bind)对象的 IsSelected 属性,以便选中 ListBoxItem。

我想知道当用户单击 时是否可以选择 ListBoxItem任意 它包含的控件?我问这个是因为我有一个带有一堆控件的稍微复杂的 TreeView,并且我正在寻找一种简单或优雅的方式来选择 TreeViewItem,只要用户单击它的任何位置。

enter image description here

更新:

我接受了 Rachel 的回答,因为它与 ListBox 完美配合,它引导我找到一个似乎支持我的 TreeView 的解决方案:监听 TreeViewItems 上的 GotFocus 事件,当事件发生时,将 e.Handled 设置为 true防止事件冒泡到现在选定的 TreeViewItem 的祖先

xml:

<TreeView>
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<EventSetter Event="GotFocus" Handler="TVI_GotFocus"/>
...

C#:
    void TVI_GotFocus(object sender, RoutedEventArgs e)
{
e.Handled = true;
if (!(sender is TreeViewItem))
return;
if (((TreeViewItem)sender).IsSelected)
return;
((TreeViewItem)sender).IsSelected = true;
}

最佳答案

您还应该能够针对 ListBoxItem.IsKeyboardFocusWithin 设置触发器并避免后面的任何代码:

<Style TargetType="ListBoxItem">
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="IsSelected" Value="True" />
</Trigger>
</Style.Triggers>
</Style>

关于.net - WPF:当其中一个控件获得焦点时,如何选择 ListBoxItem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6945214/

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