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模式的答案的奖励积分.
这是一个使用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)
很简单.我可能会尝试将我的属性命名为"模型"而不是"视图",但这种约定并不完全不合适.
| 归档时间: |
|
| 查看次数: |
3110 次 |
| 最近记录: |