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

我在银光中拍了一格.最初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,CultureInfo culture) 
  {
    throw new InvalidOperationException("Converter cannot convert back.");
  }
}

相关文章

如何在Silverlight4(XAML)中绑定IsEnabled属性?我试过简单的...
我正在编写我的第一个vb.net应用程序(但我也会在这里标记c#,...
ProcessFile()是在UIThread上运行还是在单独的线程上运行.如...
我从同行那里听说,对sharepoint的了解对职业生涯有益.我们不...
我正在尝试保存一个类我的类对象的集合.我收到一个错误说明:...
我需要根据Silverlight中的某些配置值设置给定控件的Style.我...