依赖属性
在wpf中,所有支持绑定的属性本质上都是封装后的依赖属性,也就是说,只有依赖属性才可以进行绑定
下面演示了在Button按钮上为Content属性设置了一个绑定语法, 如下所示:
<Button Content="{Binding Content}"/>
当你在Content属性按下F12转到定义时,可以观察到Button按钮所继承的类的定义,如下所示:
如图上红圈位置, 定义了一个静态的只读字段ContentProperty。
通过查看该字段的类型DependencyProperty, 它就是一个依赖属性
MVVM 不能绑定事件的解决办法
WPF 使用System.Windows.Interactivity交互事件
下载System.Windows.Interactivity.dll文件,并引入项目中(在VS项目的引用列表中可以看到)。可在Nuget搜索System.Windows.Interactivity下载安装到项目中。
XAML中使用该dll
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
//ComboBox 绑定SelectionChanged事件
<ComboBox Style="{Binding ComboboxStyle}" Foreground="White" ItemsSource="{Binding MenuDisplayLevel}" SelectedItem="{Binding MenuDisplayLevelItem}" BorderThickness="0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding FamilySelectionChangedCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
由于VS中不支持System.Windows.Interactivity的智能提示,经常要查阅这个EventTrigger还能触发哪些方法,所有EventName的列表如下:
MSDN中Grid Events https://msdn.microsoft.com/en-us/library/system.windows.controls.grid_events(v=vs.110).aspx