gpt4 book ai didi

c# - 删除 WPF IsDefault

转载 作者:行者123 更新时间:2023-11-30 22:11:41 25 4
gpt4 key购买 nike

我的 Window 上放置了 3 个控件在 WPF 中,每个控件包含一个或多个 TextBoxButton , when a new control is selected I would like to change the IsDefault到那个按钮。我目前正在做的是 TextBoxGotFocus事件被触发,我更改我的 ButtonIsDefault .这是第一次工作,但是当我从一个控件更改为另一个控件,然后返回到第一个选定的控件时,第二个控件 IsDefault仍然如此,当按下 enter 时,它会触发 Click错误控件上的事件。

有没有办法清除所有IsDefault我窗口上的属性或者什么是我当前执行此操作的更好解决方案?例如,请参见下图,当按下 enter 时 Button用“...”触发而不是快速搜索。

enter image description here

XAML(更新)

 <odc:OdcTextBox Text="{Binding AccountNumber, UpdateSourceTrigger=PropertyChanged}" MinWidth="100" Name="txtAccountNumber" Grid.Row="1" Grid.Column="1" VerticalAlignment="Center" Margin="{Binding TextMargin}">
<odc:OdcTextBox.Buttons>
<Button IsDefault="{Binding ElementName=txtAccountNumber, Path=IsKeyboardFocusWithin}" Width="30" Style="{StaticResource DionysusButton}" x:Name="btnCdv" Content="...">

</Button>
</odc:OdcTextBox.Buttons>
</odc:OdcTextBox>

最佳答案

<Button IsDefault={Binding IsKeyboardFocusWithin, ElementName=ThisGroupBox} />

编辑:

您的代码略有不同,因为您为某些自定义控件提供了按钮。这些按钮的声明范围与它们最终所在的范围不同(即我假设它们最终位于 OdcTextBox 模板内的某处)。我怀疑这就是 WPF 找不到命名元素的原因,因为该元素是在外部作用域中命名的。

您可以尝试使用 RelativeSource 来查找父级 OdcTextBox:

<Button IsDefault="{Binding IsKeyboardFocusWithin, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type odc:OdcTextBox}}}" 
Width="30" Style="{StaticResource DionysusButton}" x:Name="btnCdv" Content="...">

关于c# - 删除 WPF IsDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20119630/

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