gpt4 book ai didi

wpf - 即使左键单击按钮也保留网格焦点状态

转载 作者:行者123 更新时间:2023-12-01 13:00:11 24 4
gpt4 key购买 nike

我有一个网格和一个按钮。我希望能够按 down-arrow 选择一行,然后单击按钮,然后按 down-arrow 选择下一行,然后单击按钮。

但是,当我单击按钮时,网格键盘焦点不再位于该行上。

这是一个例子。在这张图片中,我选择了第三行。我想要的行为是:我用鼠标单击 Press Me,然后按一次键盘向下箭头以选择第四行。相反,当我按下 down-arrow 时,顶部的单元格周围有一个框架,当我再次按下它时,顶部的行被选中。

A WPF grid and a button

我应该如何着手创建我需要的行为?我试过编辑后面的代码以明确关注网格,但这没有用。

这是示例的完整代码。

<Window x:Class="WpfTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<XmlDataProvider x:Key="DcCharacters">
<x:XData>
<Characters xmlns="">
<Character HeroName="Catwoman" Identity="Selina Kyle" />
<Character HeroName="Batman" Identity="Bruce Wayne" />
<Character HeroName="Starman" Identity="Jack Knight" />
<Character HeroName="BlueBeetle" Identity="Jaime Reyes" />
</Characters>
</x:XData>
</XmlDataProvider>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid
Grid.Row="0"
ItemsSource="{Binding Source={StaticResource DcCharacters},
XPath=//Characters/Character}"
AutoGenerateColumns="False"
IsReadOnly="True"
>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding XPath=@HeroName}" />
<DataGridTextColumn Binding="{Binding XPath=@Identity}" />
</DataGrid.Columns>

</DataGrid>
<StackPanel Grid.Row="1">
<Button Margin="3,3,3,3" Width="Auto" Height="Auto" HorizontalAlignment="Left">_Press Me!</Button>
</StackPanel>
</Grid>
</Window>

最佳答案

我认为您正在寻找附加属性 FocusManager.IsFocusScope .

通过在 StackPanel 上将其设置为 true,其中的 Button (或其他控件)在用鼠标单击时不会窃取焦点。它们将像工具栏按钮或菜单一样工作。不过,您仍然可以切换到它们。

这是一个例子,如果你有三个按钮而不是一个,剪切、复制和粘贴

<StackPanel Grid.Row="1"
FocusManager.IsFocusScope="True" >
<Button Width="Auto" Height="Auto" HorizontalAlignment="Left">Cut</Button>
<Button Width="Auto" Height="Auto" HorizontalAlignment="Left">Copy</Button>
<Button Width="Auto" Height="Auto" HorizontalAlignment="Left">Paste</Button>
</StackPanel>

或者在你的情况下,只是

<StackPanel Grid.Row="1"
FocusManager.IsFocusScope="True">
<Button Margin="3,3,3,3" Width="Auto" Height="Auto" HorizontalAlignment="Left">_Press Me!</Button>
</StackPanel>

关于wpf - 即使左键单击按钮也保留网格焦点状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6688901/

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