错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.

原文:错误:“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>

原文地址:https://www.cnblogs.com/lonelyxmas/p/8526200.html

时间: 2024-10-10 18:42:35

错误:“ResourceDictionary”根元素需要 x:Class 特性来支持 XAML 文件中的事件处理程序。请移除 MouseLeftButtonDown 事件的事件处理程序.的相关文章

Goldengate 12.2新特性-自描述的队列文件

OGG12.2中最大的变化之一就是队列文件是自描述的,意思是不再担心以前版本中,表结构异构的情况,也不再需要defgen生成定义文件,以及不再使用assumeTargetDefs或SourceDefs参数.许多手工处理的步骤不再需要了.即使源和目标是不同的平台或数据库也是如此.因为队列文件中已经包含了表结构等元信息. 下面的示例中会演示这个特性,现在队列文件中包含有两个重要的信息DDR(数据库定义记录)和TDR(表定义记录).每个队列文件在某个库的任何一个DML或序列操作之前都会包含一个DDR,

asp.net mvc 碰到 XML 解析错误:找不到根元素 位置

具体报错信息如下: XML 解析错误:找不到根元素 位置:moz-nullprincipal:{4a1d2b7c-6d07-468e-9df9-2267a0422c93} 行 1,列 1: 网上给出的解决方案: js跨域操作时(网上搜,比较详细) 看着貌似有点沾边,结果我把浏览器缓存清除之后,就没有再出现这个问题了

XML 解析错误:找不到根元素

大家在开发web项目的过程中,可能会遇到"XML 解析错误:找不到根元素"这么一个问题,引起这个问题的原因可能有很多种,在这儿我只是跟大家分享一下我遇到一种情况. 1.项目背景描述 httl页面,jquery,springmvc框架开发项目的时候出现的问题 我在客户端通过ajax访问后台控制器中的action 未修改之前 /** * 生成图片 * @param request * @param uplodapath */ @RequestMapping(value="crea

解决:xml中出现“文档中根元素后面的标记必须格式正确。”的错误

配置业务域,type指定使用自定义的fieldType. 修改solr工程下的schema.xml文件,在文件末尾添加一个自定义的fieldType,如下: <schema>............</schema>    <fieldType name="text_ik" class="solr.TextField">      <analyzer class="org.wltea.analyzer.lucene

xml中出现“文档中根元素后面的标记必须格式正确” 的错误

<?xml version="1.0" encoding="utf-8"?> <person>//这里是根元素,必须要有,否则会报错 <birthday class="object"> <day type="string">17</day> <month type="string">12</month> <year t

DataTable读写到XML文件的正确方法(以及对缺少根元素问题的处理)

有时候需要将DataTable数据保存到xml文件中,在不使用数据库的小程序中.在需要通过网络接口传参数时,经常会有这种需要,操作不好,会出现"缺少根元素".现在将经过反复测试没有错误的读写两个方法写出来,大家可以修改使用. 写datatable到XML public static bool dataTable2EncXml(DataTable dt, string strFilePath) { try { string strMid = ""; MemoryStr

【android】LayoutInflater.inflate方法的详解及xml根元素的布局参数不起作用的问题

一.首先看带三个参数的inflate方法: public View inflate (int resource, ViewGroup root, boolean attachToRoot) 1.如果root不为null,且attachToRoot为TRUE,则会在加载的布局文件的最外层再嵌套一层root布局,这时候xml根元素的布局参数当然会起作用. 2.如果root不为null,且attachToRoot为false,则不会在加载的布局文件的最外层再嵌套一层root布局,这个root只会用于为

flutter: 根视图、根元素与根渲染

flutter如何建立的视图树(WidgetTree),元素树(ElementTree)及渲染树(RenderingTree),又是如何更新视图绘制视图? 这个问题太大,刚开始一切又都是陌生的,理解起来千头万绪,所以先搞清这些树的根结点的身份是非常必要的.毫无疑问,这些根节点的建立紧密的与初始化过程关联,而确定了这些根节点之后,遍历查找更新就相对清晰了,因为绘制视图无非也是对树的遍历查找更新操作. 这部分就已经从引擎层进入到了dart层,需要了解的更多的是框架相关的机制,引擎目前用不到了. 环境

会触发BFC的根元素

一.BFC 定义 BFC(Block formatting context)直译为"块级格式化上下文".它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干. 二.BFC布局规则:1.BFC布局规则:(1)内部的Box会在垂直方向,一个接一个地放置.(2)Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠(3)每个元素的margin box的左边,