我在WPF中的Window
上放置了3个控制框,每个控件包含一个或多个TextBox
和Button
,当选择一个新控件时,我想将IsDefault
更改为该按钮。我目前正在做的是,当触发TextBox
的GotFocus
事件时,我将Button
更改为IsDefault
。这是第一次工作,但是当我从一个控件更改为另一个控件时,又回到第一个选定的控件时,第二个控件IsDefault
仍然为true,并且当按下enter键时,它将在错误的控件上触发Click
事件。
有没有一种方法可以清除窗口上的所有IsDefault
属性,或者有什么更好的解决方案来解决当前的问题?例如,请参见下图,当按下Enter键时,将触发带有“ ...”的Button
,而不是快速搜索。
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>
最佳答案
与您使用TextBox
GotFocus
事件的方式类似,您可以执行相反的操作并使用LostFocus
事件来重置IsDefault
属性