实际上对于初次使用wpf的同学来说,尤其是有winform编程经验的童鞋来说,最需要解决的就是快速掌握访问控件的方法以及生成和使用事件。这样才能让页面具有最起码的交互性。下面我们来分别讲述。
文章原出处:https://blog.csdn.net/haigear/article/details/142470497
文章目录
- 一、通过设置名称访问控件
- 1.在XAML中设置控件名称
- 2.在代码后面访问控件
- 二、访问控件的其他方法
- 1、通过父控件访问
- 三、添加事件和处理事件
- 1.在XAML中附加事件处理器
- 2.在代码后面定义事件处理器
- 3、使用Visual Tree Helper
一、通过设置名称访问控件
1.在XAML中设置控件名称
在xaml文件中为控件设置一个名称(Name属性),这样可以在代码后面直接通过这个名称访问它。
<Button x:Name="btn" Content="Click Me"/>
<Button Name="btn" Content="Click Me"/>
只要没有名称空间的冲突,直接使用name,前面不加x:也是可以的。
2.在代码后面访问控件
完成上面这一步后,通过控件的名称属性,你可以在cs代码后面访问和操作这个控件。比如,我们给刚刚生成的按钮修改一下文字。代码如下:
// 访问按钮并设置属性
btn1.Content = "New Content";
// 调用按钮的方法
btn1.IsEnabled = false;
生成和使用事件
int counter = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
btn1.Content = "click "+counter+" times";
counter++;
}
二、访问控件的其他方法
1、通过父控件访问
假设你和我一样不想为控件一个个去命名,但如果你知道控件的父控件,可以通过父控件的Children集合访问子控件。
// 假设myButton是某个容器控件的子控件
Button foundButton = (Button)myContainerControl.Children[0];
文章原出处:https://blog.csdn.net/haigear/article/details/142470497
三、添加事件和处理事件
1.在XAML中附加事件处理器
为控件的事件(如Click)附加一个事件处理器。
<Button Content="Click Me" Click="myButton_Click"/>
其实最简单的,符合我们winform操作系统的方法是点击控件,右键菜单中找到“属性”,在属性“扳手”符号右边的“闪电”符号,点击他,你就可以看到所有可以使用的事件了,当然,肯定排在第一位的就是click事件,输入事件名称回车或者直接双击都可以来到事件代码编辑界面:
这里可以放心的是,控件有没有name属性都不影响给它添加事件。
2.在代码后面定义事件处理器
在代码后面定义事件处理器的方法,处理事件逻辑。
private void myButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show("Button clicked!");
}
3、使用Visual Tree Helper
如果需要更复杂的访问方式,比如访问嵌套较深的控件,可以使用VisualTreeHelper类。
a、事件处理的高级用法
使用命令(ICommand)
在MVVM模式中,推荐使用命令来处理事件,这样可以将UI逻辑与业务逻辑分离。
// 在ViewModel中定义命令
public ICommand MyCommand { get; private set; }
public MyViewModel()
{
MyCommand = new RelayCommand(MyExecuteMethod);
}
private void MyExecuteMethod()
{
// 执行的逻辑
}
然后在XAML中将命令绑定到控件的事件。
<Button Content="Click Me" Command="{Binding MyCommand}"/>
b、使用事件聚合器(Event Aggregator)
在复杂的应用中,可以使用事件聚合器来解耦事件的发布和订阅。
文章原出处:https://blog.csdn.net/haigear/article/details/142470497
我相信,结合我前面的《winform和wpf异同,WPF对于新人上手容易吗?》这篇文章,你基本可以开启你的WPF之旅了。当然,我还会补充一片有关wpf的数据绑定的博文,请大家继续关注《wpf中如何进行数据绑定及控件数据的动态操作》。