命令/事件的绑定
除了数据绑定,mvvm中更重要的另一块就是命令和事件的绑定,wpf中关于按钮Button
、菜单项MenuItem
等关于点击交互的事件,可以通过命令Command
在ViewModel 中实现。
基本的命令绑定
示例:在Button上绑定命令
在ViewModel中添加命令和具体执行的内容
public CommandBase UpdateCommand
{
get
{
return new CommandBase(obj =>
{
Name = NewName;
});
}
}
在Button上进行绑定
<Button
Command="{Binding UpdateCommand}"
Content="更新" />
运行:
执行后:
命令绑定传入参数
在Button
上定义CommandParameter
属性
<Button
HorizontalAlignment="Left"
VerticalAlignment="Top"
Command="{Binding UpdateCommand}"
CommandParameter="我是参数"
Content="更新" />
在ViewModel的命令中,通过obj接收传入的参数
public CommandBase UpdateCommand
{
get
{
return new CommandBase(obj =>
{
Name = obj.ToString()+"---"+NewName;
});
}
}
执行后的效果:
传入控件的属性参数
将控件属性或者控件本身(如果传入控件本身在Path后面填.
—Path=.
)当做参数传入在CommandParameter
中绑定ElementName
对应控件的name,和属性名称
格式:
CommandParameter="{Binding ElementName=ControlName(控件name), Path=PorpertyName(控件属性名)}"
<Button
Width="62"
Height="22"
Margin="104,182,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Command="{Binding UpdateCommand}"
CommandParameter="{Binding ElementName=TestTxt, Path=Text}"
Content="更新" />
<TextBox
Name="TestTxt"
Width="120"
Margin="76,280,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Text="TextBox参数"
TextWrapping="Wrap" />
运行效果:
其他事件绑定
除了点击事件通过Command绑定之外,想要绑定其他命令如MouseEnter
、SelectionChanged
等事件,则需要导入专门的nuget包
安装Nuget包
安装Microsoft.Xaml.Behaviors.Wpf
包
支持net framework4.5以上和Net core包括net5,6,7
如果使用旧版本net framework则需要安装System.Windows.Interactivity.WPF
使用
引入命名空间
xmlns:i="http://schemas.microsoft.com/xaml/behaviors"
在控件上添加触发器
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseEnter">
<i:InvokeCommandAction Command="{Binding StatusCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
命令跟之前一样定义
public CommandBase StatusCommand
{
get
{
return new CommandBase(obj =>
{
Status = "鼠标进入";
});
}
}
效果:在鼠标进入时,右侧TextBlock显示鼠标进入
其他的如ComboBox选择事件
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding ChangedCommand}" CommandParameter="{Binding ElementName=Cbox, Path=SelectedItem}" />
</i:EventTrigger>
</i:Interaction.Triggers>
效果:选项变化,Text跟随变化
特殊事件
如要绑定Button的鼠标按下和抬起,不能绑定MouseDown
和MouseUp,
而是要绑定PreviewMouseDown
和PreviewMouseUp
文章来源:https://www.toymoban.com/news/detail-484668.html
命令绑定示例-源码下载文章来源地址https://www.toymoban.com/news/detail-484668.html
到了这里,关于WPF MVVM基础教程(三)命令/事件的绑定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!