WPF - EventSetter

WPF中添加Event

1. ListBox中添加Event

<ListBox x:Name="itemsControl"  BorderThickness="0" ContextMenuService.IsEnabled="{Binding IsContextMenuOpen,UpdateSourceTrigger=PropertyChanged,Mode=TwoWay}"
                                                                                     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
                                                                                     Focusable="True"
                                                                                     ItemsSource="{Binding MyCollection}"
                                                                                     Style="{StaticResource EquipmentListStyle}" HorizontalAlignment="Stretch"
                                                                                     Background="WhiteSmoke" SelectionMode="Single"
                                                                                     PreviewMouseLeftButtonDown="itemsControl_PreviewMouseLeftButtonDown"
                                                                                     ContextMenuOpening="itemsControl_ContextMenuOpening">
                                                                                <ListBox.Resources>
                                                                                    <Style TargetType="{x:Type ListBoxItem}">
                                                                                        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                                                                                        <Setter Property="VerticalContentAlignment" Value="Top"/>
                                                                                        <Setter Property="Focusable" Value="True"></Setter>
                                                                                        <Setter Property="ContextMenu"  Value="{StaticResource PanelContextMenu}"/>
                                                                                        <EventSetter Event="LostFocus" Handler="ListBoxItem_LostFocus"/>
                                                                                        <EventSetter Event="LostKeyboardFocus" Handler="ListBoxItem_LostKeyboardFocus"/>
                                                                                    </Style>
                                                                                </ListBox.Resources>
                                                                            </ListBox>

 code behind 代码

private void ListBoxItem_LostFocus(object sender, RoutedEventArgs e)
        {
            //((SolidColorBrush)(sender as ListBoxItem).Resources["SelectionColorKey"]).Color = Colors.Transparent;
        }

        private void ListBoxItem_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            //ListBoxItem lbi = sender as ListBoxItem;
            //if (lbi != null)
            //{
            //    ((SolidColorBrush)lbi.Resources["SelectionColorKey"]).Color = Colors.Transparent;
            //}
            //((SolidColorBrush)(sender as ListBoxItem).Resources["SelectionColorKey"]).Color = Colors.Transparent;
        }

显示Menu

<ContextMenu x:Key="MyContextMenu" StaysOpen="False" Opened="MyContextMenu_Opened">
                <MenuItem x:Name="menuItemEdit" Header="Edit"
                      Click="ContextMenu_Edit_Click">
                </MenuItem>
                <MenuItem x:Name="menuItemTest" Header="Test"
                      Click="ContextMenu_Test_Click">
                </MenuItem>

</ContextMenu>

Menu event code behind

private void ContextMenu_Edit_Click(object sender, RoutedEventArgs e)
{
}

  

时间: 2024-10-22 21:55:31

WPF - EventSetter的相关文章

WPF EventSetter Handler Command

最近做一个工具,突然发现ListBox和ListView等列表控件的MouseDoubleClick事件有时候是获取不到当前双击的行对象数据的,比如这样写: <ListBox Grid.Row="1" ItemsSource="{Binding DataList}" MouseDoubleClick="ListBox_MouseDoubleClick" SelectedItem="{Binding CurrentSelectIte

wpf企业应用之主从结构列表

主从结构在企业级应用中相当常见,这里结合我的例子谈一下wpf中主从结构列表展示的常用做法,具体效果见 wpf企业级开发中的几种常见业务场景. 首先,Model有两种,主表对应model(假设为modelA),从表对应的model(假设为modelB),两种model分别用于绑定列表,就是普通列表的绑定. 其次,由于要实现联动效果(即选择主表中的一条记录显示从表的记录),故而我们的ViewModel里面必须设计一个SelectedModelA用来绑定选中项,SelectedModelA变化时去更新

WPF学习笔记(3)——style

http://www.cnblogs.com/Zhouyongh/archive/2011/08/01/2123610.html Style 用来在类型的不同实例之间共享属性.资源和事件处理程序,您可以将 Style 看作是将一组属性值应用到多个元素的捷径. 这是MSDN上对Style的描述,翻译的还算中规中矩.Style(样式),简单来说,就是一种对属性值的批处理,类似于Html的CSS,可以快速的设置一系列属性值到UI元素. 示例 一个最简单的Style的例子: 1: <Window> 2

WPF - Style 属性 Setter

为了不让人迷惑,首先说明 Setters是一个属性 .Setter 是一个类 Setters 是Style类中的一个重要属性. Setters 包含着 Setter 和 EventSetter 类的集合 我们平时要用的 Setter 类, 用的它的什么?  三个属性:Property.Value.TargetName 怎么用 ?如下:把 这个窗体的按钮字体大小设置为36,可见:Style 类的TargetType 属性是用来指定被作用的对象类型的,这里是Button Setter 类的属性集合,

WPF 带CheckBox、图标的TreeView

WPF 带CheckBox.图标的TreeView 在WPF实际项目开发的时候,经常会用到带CheckBox的TreeView,虽然微软在WPF的TreeView中没有提供该功能,但是微软在WPF中提供强大的ItemTemplate模板功能和自定义样式,那我们可以自己写一个这样的控件供自己使用. 我自己写的这个比较简单. 首先写一个供TreeView使用的数据模型,并且实现INotifyPropertyChanged接口,用于向客户端(通常是执行绑定的客户端)发出某一属性值已更改的通知,当属性改

WPF触发器(非数据库中的触发器)

一.什么是触发器?触发器(Trigger)就是当某种条件满足后即完成相应逻辑功能的一部分程序组成.在当前的WPF中,Trigger一共有三种类型,它们分别是: (1)属性触发器:其对应的类是Trigger.它在特定关联属性发生变化时被触发. (2)数据触发器:其对应的类是DataTrigger.它在特定的CLR类型所记录的值发生变化时被触发. (3)事件触发器:其对应的类是EventTrigger.它将在特定的路由事件发生时被触发. 在WPF中,每一个可以使用触发器的类中都会有一个Trigger

wpf样式绑定 行为绑定 事件关联 路由事件实例

代码说明:我要实现一个这样的功能  有三个window窗口  每个窗体有一个label标签  当我修改三个label标签中任意一个字体颜色的时候  其他的label标签字体颜色也变化 首先三个窗体不用贴代码了  直接添加三个就行了 样式绑定: 先添加数据源  代码如下: (注:为了防止propertyName硬编码写死   可以使用CallerMemberName附加属性来获取默认的属性名称 或者使用表达式目录树Expression<Func<T>>的方式来获取) 1 public

WPF样式和资源2

<Window.Resources> <FontFamily x:key="ButtonFontFamily">Time New Roman</FontFamily> <sys:Double x:key="ButtonFontSize">18</s:Double> <FontWeight x:key="ButtonFontWeight">Bold</FontWeight

理解WPF路由事件

(一)什么时路由事件功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件.实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (WPF) 事件系统来处理(二)路由事件的划分(1)冒泡:针对事件源调用事件处理程序.路由事件随后会路由到后续的父元素,直到到达元素树的根.(2)隧道:最初将在元素树的根处调用事件处理程序.随后,路由事件将朝着路由事件