初识wpf的mvvm模式
model:实体对象(不做过多的解释。)
View:视图,在wpf中的ui布局。
ViewModel:视图模型。
mvvm的好处
降低view 层与model层的耦合。
viewmodel中可以绑定事件。(我刚开始接触wpf的时候,把事件写到视图的.cs文件中,现在想想真是。。。)
复制代码
/// <summary>
/// 命令
/// </summary>
public ICommand LoadCommand { getset}
public LogoViewModel()
{
LoadCommand = new RelayCommand(Click)
}
private void Click()
{
MessageBox.Show("这是d出框事件")
}
复制代码
双向绑定(数据发生变化后自动通知model该数据发生了变化) 下图的方法用来监听数据是否发生变化,发生变化后会通知用到该数据的地方让他们自己修改。
mvvm要做什么。
大白话说,MVVM框架,要做的最基本的事情就是数据绑定和命令绑定。因为页面UI中会产生大量的事件,因此还需要将事件绑定到MVVM中的命令上。
今天就写到这里,如果小弟写的有什么问题,欢迎各位大牛多多指正。
待续未完。。。 明天会持续更新。
好文要顶 关注我
表中创建三个字段就可以了(ID,Name,ParentID),然后定义一个对应节点的类,比如:public class TypeNode
{
public string ID{getset}
public string Name{getset}
public TypeNode Parent{getset}
public ObservableCollection<TypeNode>Children{getset}
public bool IsSelected{getset}
}
添加构造节点的方法,根据ID来确定上下级和加载子节点,代码就不列举了;然后实现一下INotifyPropertyChanged接口就差不多了。接着定义几个样式:
<Style x:Key="TypeTreeStyle" TargetType="TreeView">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TreeView">
<ScrollViewer Padding="4" Focusable="False" CanContentScroll="False">
<ItemsPresenter/>
</ScrollViewer>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="TypeNode" TargetType="TreeViewItem">
<Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
<Setter Property="FontWeight" Value="Normal"/>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="FontWeight" Value="Bold"/>
</Trigger>
</Style.Triggers>
</Style>
<HierarchicalDataTemplate x:Key="TypeTreeGroup" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding TypeName}" FontSize="13"/>
</HierarchicalDataTemplate>
在ViewModel或是后台代码中定义一个ObservableCollection<TypeNode>集合,名为TypeTree,在xaml中添加TreeView并绑定:
<TreeView ItemsSource="{Binding TypeTree}"
Style="{StaticResource TypeTreeStyle}"
ItemContainerStyle="{StaticResource TypeNode}"
ItemTemplate="{StaticResource TypeTreeGroup}"/>
根据节点的IsSelected属性来确定在哪个位置创建子节点,同时就得到了数据的ParentID,再加上创建时指定的ID和Name存入数据库就完工了。希望对你有帮助,还有疑问请追问或是Hi
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)