Silverlight 3 DataForm,如何显示/隐藏字段

Cha*_*adT 0 mvvm silverlight-3.0 dataform

我有一个DataForm,我已将某些DataField的Visibility设置为Collapsed,当用户从ComboBox中选择一个选项时,某些DataFields应该再次可见.

基本上(粗糙的伪代码).

OnComboBoxChange = 
    if this.index = 1 then
        DataForm.Fields[1].Visibility = Visible
    else
        DataForm.Fields[2].Visibility = Visible
Run Code Online (Sandbox Code Playgroud)

适用于MVVM模式的答案的奖励积分.

And*_*mes 5

这是一个使用MVVM的示例,它避免了代码隐藏(有争议的MVVM禁忌):

<UserControl>
  <StackPanel>
    <ComboBox x:Name="comboBox" SelectionChanged="comboBox_SelectionChanged"/>
    <StackPanel Orientation="Horizontal" Visibility="{Binding IsFirstFormShown}">
      <TextBlock Text="First: "/>
      <TextBox/>
    </StackPanel>
    <StackPanel Orientation="Horizontal" Visibility="{Binding IsSecondFormShown}">
      <TextBlock Text="Second: "/>
      <TextBox/>
    </StackPanel>
  </StackPanel>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

这是你的ViewModel,然后,

public class MyFormViewModel : INotifyPropertyChanged
{
     private System.Windows.Visibility _isFirstShown;
     public System.Windows.Visibility IsFirstFormShown
     {
          get { return _isFirstShown; }
          set
          {
               _isFirstShown = value;
               if (PropertyChanged != null ) 
               { 
                    PropertyChanged(this, new PropertyChangedEventArgs(value)); 
               }
          }
     }

     //TODO: implement the other property (writing code in this edit window makes me tired)
     //hopefully you get the picture here...
}
Run Code Online (Sandbox Code Playgroud)

很简单.我可能会尝试将我的属性命名为"模型"而不是"视图",但这种约定并不完全不合适.