我在银光中拍了一格.最初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;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但我想使用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}}
/>
Run Code Online (Sandbox Code Playgroud)
像这样实现值转换器:
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.");
}
}
Run Code Online (Sandbox Code Playgroud)