我在银光下取了一个网格。最初,textbox2 是不可见的。当我单击 textbox1 时,我们必须看到 textbox2。我尝试如下:
<TextBox x:Name="textbox1" SelectionChanged="txt1_SelectionChanged"/>
<TextBox x:Name="textbox2 " Visibility="Collapsed"/>
private void txt1_SelectionChanged(object sender, RoutedEventArgs e)
{
textbox2 .Visibility = Visibility.Visible;
}
效果很好。
但我想使用MVVM模式。所以我不想使用 eventHandler。
那么如何使用 MVVM 模式做到这一点呢?
编辑:抱歉,我以为您的意思是当另一个文本框具有焦点时文本框可见,我更改了最初的答案。
我目前无法尝试,但您可以使用 valueconverter 将文本框的 Visibility 属性绑定到另一个文本框的 SelectionLength 属性:
<UserControl.Resources>
<local:IntToVisibilityConverter x:Key="IntToVisibilityConverter" />
</UserControl.Resources>
<Textbox
x:name="textbox2"
Visibility={Binding SelectionLength,
ElementName="textbox1"
Converter={StaticResource IntToVisibilityConverter}}
/>
像这样实现值转换器:
public class IntToVisibilityConverter : IValueConverter
{
public Object Convert(Object value, Type targetType, Object parameter, CultureInfo culture)
{
return (int)value > 0 ? Visibility.Visible : Visibility.Hidden;
}
public Object ConvertBack(Object value, Type targetType, Object parameter, CultureInfo culture)
{
throw new InvalidOperationException("Converter cannot convert back.");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)