wpfevent清除

wpfevent清除,第1张

raiseevent。直接调用addhandler或者removehandler方法来添加和删除事件。wpfevent清除激发事件方法调用的是raiseevent,这个方法是在uielement类中定义的,即所有ui元素都有这个方法。

之前我先唠叨两句,现在公司要求用wpf写个客户端,我之前玩过winform,没怎么用wpf写过正经项目,我接手这个wpf项目之后就开始研究这个东西,MVVM,自定义控件,等等。可能是winfrom先入为主的思想,导致了我以为wpf可以按照winfrom的模式来开发,viewmodel,不就是提供数据的吗,可是在我仔细研究之后我发现,mvvm模式开发wpf简直是神器。好了,废话不多说了,下面开始今天的正题。

初识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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11755181.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存