添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议 》和 《 阿里云开发者社区知识产权保护指引 》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单 进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。 原文:错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序. 转载于(https://social.
+关注继续查看
原文: 错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.

转载于( https://social.msdn.microsoft.com/Forums/windowsapps/zh-CN/af3161ce-f020-4b0b-9b84-95ae597e53fd/resourcedictionary-xclass-xaml-mouseleftbuttondown-xclass?forum=wpfzhchs )

在资源字典中设置listboxItem的鼠标左击的事件样式。

打出这段代码提示“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序,或将 x:Class 特性添加到根元素。 ”错误,

这句话是什么意思?难道EventSetter 不能在资源字典中写?

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WpfApplication1">
    <Style x:Key="remenber" TargetType="{x:Type ListBoxItem}"  >
        <Setter Property="Margin" Value="1"></Setter>
<EventSetter Event="MouseLeftButtonDown"  Handler="ProjectMouseLeftButtonDown"/>
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="#FF569BEE"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</ResourceDictionary>

解决思路:

1.首先,EventSetter 是可以在资源字典中写的。那句提示意思是需要在ResourceDictionary标签内加上x:Class特性。
你可以写成这样:

ResourceDictionary xmlns= "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml" xmlns: local = "clr-namespace:WpfApplication1" x:Class= "命名空间.资源字典的名称" > </ResourceDictionary>

命名空间:以你的代码为例,此处应为”WpfApplication1”
资源字典的名称:如果资源字典文件是”Dictionary1.xaml”,这里就是”Dictionary1”
完整写法就是 x:Class=”WpfApplication1. Dictionary1”

2.下面的Demo供你参考:

Dictionary1.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:WriteEventInResourceDictionary"
                    x:Class="WriteEventInResourceDictionary.Dictionary1">
    <Style  TargetType="{x:Type ListBoxItem}" BasedOn="{StaticResource {x:Type ListBoxItem}}">
        <EventSetter Event="PreviewMouseLeftButtonDown" Handler="MyCustomMouseEvent"/>
    </Style>
</ResourceDictionary>

Dictionary1.xaml.cs:

namespace WriteEventInResourceDictionary
    public partial class Dictionary1
        private void MyCustomMouseEvent(object sender, RoutedEventArgs e)
            MessageBox.Show("Hello");

MainWindow.xaml:

<ListBox>                       
      <ListBoxItem>Item 1</ListBoxItem>                        
      <ListBoxItem>Item 2</ListBoxItem>                        
      <ListBoxItem>Item 3</ListBoxItem>                
</ListBox>

App.xaml:

<Application x:Class="WriteEventInResourceDictionary.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WriteEventInResourceDictionary"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
简单解析JavaScript的默认事件及如何阻止默认事件 上篇文章就提到,在JavaScript中提到事件冒泡两个必不可少也要提的就是事件捕获和默认事件,现在来聊一聊什么是默认事件,及如何阻止默认事件。 1.什么是默认事件 顾名思义,默认事件就是默认执行的事件,比如 a标签,点击a标签,页面会自动跳转。如图: 在这里插入图片描述 HTML代码: &lt;form action=&quot;&quot;&gt; &lt;input type=&quot;submit&quot; id=&quot;submit&quot;&gt; &lt;input type=&quot;image&quot; src=&quot;../../CSS/0421/car.jpg&quot;
1387809421166477 本以为Label也有TextChanged 事件,但在使用的时候却没找到,网友说Label的Content属性改变肯定是使用赋值操作,赋值的时候就可以对其进行相应的操作所以不需TextChanged C#(WPF)去除事件中注册的事件处理方法!
在WPF中,移除一个事件中已经注册的处理方法,看似简单,实际还是很痛苦的一件事情。因为C#的灵活性,定义事件的方法也是多种多样。我自己定义了一个事件: public event EventHandler TestEvent; 当我想注销这个事件上注册的所有方法的时候,我可以按如下的方法进行 Delegate[] dels = TestEvent.
wangccsy 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性
原文:背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manipulate 手势处理, 路由事件的注册, 路由事件的冒泡, 命中测试的可见性 [源码下载] 背水一战 Windows 10 (69) - 控件(控件基类): UIElement - Manip...
背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件
原文:背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Pointer 相关事件, Tap 相关事件, Key 相关事件, Focus 相关事件 [源码下载] 背水一战 Windows 10 (68) - 控件(控件基类): UIElement - Poin...