我有一个包含两个 StackPanel 的页面,每个 StackPanel 包含一个 TextBox 和一个 Button:
<StackPanel x:Name="Row1">
<TextBox x:Name="TextBox1" Text="" GotFocus="OnFocusHandler" LostFocus="OffFocusHandler"/>
<Button x:Name="Button1" Content="Convert" Click="OnClickHandler" Visibility="Collapsed"/>
</StackPanel>
<StackPanel x:Name="Row2">
<TextBox x:Name="TextBox2" Text="" GotFocus="OnFocusHandler" LostFocus="OffFocusHandler"/>
<Button x:Name="Button2" Content="Convert" Click="OnClickHandler" Visibility="Collapsed"/>
</StackPanel>
我想做以下事情:
- 当一个文本框有焦点时,另一个文本框必须被隐藏并且相应的按钮必须显示
- 当一个文本框失焦时,我们回到原来的显示:只有空的文本框是可见的
- 我不希望按钮能够触发 OffFocusHandler
这是我为三个处理程序拥有的当前代码:
private void OnFocusHandler(object sender, RoutedEventArgs e)
{
TextBox SenderTextBox = (TextBox)sender;
if (SenderPanel.Name == "TextBox1")
{
Button1.Visibility = Visibility.Visible;
}
else if (SenderPanel.Name == "TextBox2")
{
Button2.Visibility = Visibility.Visible;
}
}
private void OffFocusHandler(object sender, RoutedEventArgs e)
{
TextBox1.Text = "";
TextBox2.Text = "";
Button1.Visibility = Visibility.Collapsed;
Button2.Visibility = Visibility.Collapsed;
}
private void OnClickHandler(object sender, RoutedEventArgs e)
{
// some stuff unrelated to my issue
}
如何避免单击按钮触发OffFocusHandler
代码?还有另一种编码方式吗?我是一个完整的初学者,所以我可能不会想到正确的方法。