我在WPF中的Window上放置了3个控制框,每个控件包含一个或多个TextBoxButton,当选择一个新控件时,我想将IsDefault更改为该按钮。我目前正在做的是,当触发TextBoxGotFocus事件时,我将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属性

10-08 18:12