在Silverlight中使用MVVM模式设置可见性

sta*_*ack 3 silverlight

我在银光中拍了一格.最初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模式呢?

Oza*_*zan 5

编辑:对不起,我以为你的意思是当另一个有焦点时文本框可见,我改变了我的初始答案.

我目前无法尝试,但您使用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)