wpf中如何访问控件和生成使用事件?

实际上对于初次使用wpf的同学来说,尤其是有winform编程经验的童鞋来说,最需要解决的就是快速掌握访问控件的方法以及生成和使用事件。这样才能让页面具有最起码的交互性。下面我们来分别讲述。

文章原出处:https://blog.csdn.net/haigear/article/details/142470497

文章目录

一、通过设置名称访问控件

1.在XAML中设置控件名称

在xaml文件中为控件设置一个名称(Name属性),这样可以在代码后面直接通过这个名称访问它。

csharp 复制代码
<Button x:Name="btn" Content="Click Me"/>
csharp 复制代码
<Button Name="btn" Content="Click Me"/>

只要没有名称空间的冲突,直接使用name,前面不加x:也是可以的。

2.在代码后面访问控件

完成上面这一步后,通过控件的名称属性,你可以在cs代码后面访问和操作这个控件。比如,我们给刚刚生成的按钮修改一下文字。代码如下:

csharp 复制代码
// 访问按钮并设置属性
btn1.Content = "New Content";
csharp 复制代码
// 调用按钮的方法
btn1.IsEnabled = false;
生成和使用事件
csharp 复制代码
int counter = 0;
private void Button_Click(object sender, RoutedEventArgs e)
{
    btn1.Content = "click "+counter+" times";
    counter++;
}


二、访问控件的其他方法

1、通过父控件访问

假设你和我一样不想为控件一个个去命名,但如果你知道控件的父控件,可以通过父控件的Children集合访问子控件。

csharp 复制代码
// 假设myButton是某个容器控件的子控件
Button foundButton = (Button)myContainerControl.Children[0];

文章原出处:https://blog.csdn.net/haigear/article/details/142470497

三、添加事件和处理事件

1.在XAML中附加事件处理器

为控件的事件(如Click)附加一个事件处理器。

csharp 复制代码
<Button Content="Click Me" Click="myButton_Click"/>

其实最简单的,符合我们winform操作系统的方法是点击控件,右键菜单中找到"属性",在属性"扳手"符号右边的"闪电"符号,点击他,你就可以看到所有可以使用的事件了,当然,肯定排在第一位的就是click事件,输入事件名称回车或者直接双击都可以来到事件代码编辑界面:

这里可以放心的是,控件有没有name属性都不影响给它添加事件。

2.在代码后面定义事件处理器

在代码后面定义事件处理器的方法,处理事件逻辑。

csharp 复制代码
private void myButton_Click(object sender, RoutedEventArgs e)
{
    MessageBox.Show("Button clicked!");
}

3、使用Visual Tree Helper

如果需要更复杂的访问方式,比如访问嵌套较深的控件,可以使用VisualTreeHelper类。

a、事件处理的高级用法

使用命令(ICommand)

在MVVM模式中,推荐使用命令来处理事件,这样可以将UI逻辑与业务逻辑分离。

csharp 复制代码
// 在ViewModel中定义命令
public ICommand MyCommand { get; private set; }

public MyViewModel()
{
    MyCommand = new RelayCommand(MyExecuteMethod);
}

private void MyExecuteMethod()
{
    // 执行的逻辑
}

然后在XAML中将命令绑定到控件的事件。

csharp 复制代码
<Button Content="Click Me" Command="{Binding MyCommand}"/>

b、使用事件聚合器(Event Aggregator)

在复杂的应用中,可以使用事件聚合器来解耦事件的发布和订阅。

文章原出处:https://blog.csdn.net/haigear/article/details/142470497

我相信,结合我前面的《winform和wpf异同,WPF对于新人上手容易吗?》这篇文章,你基本可以开启你的WPF之旅了。当然,我还会补充一片有关wpf的数据绑定的博文,请大家继续关注《wpf中如何进行数据绑定及控件数据的动态操作》

相关推荐
明耀1 天前
WPF TabControl 设置item不能点击
wpf
军训猫猫头1 天前
20.抽卡只有金,带保底(WPF) C#
ui·c#·wpf
明耀1 天前
WPF 设置平均布局 如果隐藏的话,能够自动扩展
wpf
晚安苏州2 天前
WPF DataTemplate 数据模板
wpf
甜甜不吃芥末3 天前
WPF依赖属性详解
wpf
Hat_man_3 天前
WPF制作图片闪烁的自定义控件
wpf
晚安苏州4 天前
WPF Binding 绑定
wpf·wpf binding·wpf 绑定
wangnaisheng4 天前
【WPF】RenderTargetBitmap的使用
wpf
dotent·5 天前
WPF 完美解决改变指示灯的颜色
wpf
orangapple6 天前
WPF 用Vlc.DotNet.Wpf实现视频播放、停止、暂停功能
wpf·音视频