wpf - 是否可以在 WPF 中的资源字典后面设置代码以进行事件处理?

标签 wpf

是否可以在 WPF 中的资源字典后面设置代码。例如,在按钮的用户控件中,您可以在 XAML 中声明它。按钮单击的事件处理代码是在控件后面的代码文件中完成的。如果我要创建一个带有按钮的数据模板,如何在资源字典中为其按钮单击编写事件处理程序代码。

最佳答案

我认为您要问的是您想要 ResourceDictionary 的代码隐藏文件。你完全可以做到这一点!事实上,您可以按照与窗口相同的方式进行操作:

假设您有一个名为 MyResourceDictionary 的 ResourceDictionary。在 MyResourceDictionary.xaml 文件中,将 x:Class 属性放入根元素中,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    x:Class="MyCompany.MyProject.MyResourceDictionary"
                    x:ClassModifier="public">

然后,使用以下声明创建一个名为 MyResourceDictionary.xaml.cs 的代码隐藏文件:

namespace MyCompany.MyProject
{
    partial class MyResourceDictionary : ResourceDictionary
    { 
       public MyResourceDictionary()
       {
          InitializeComponent();
       }     
       ... // event handlers ahead..
    }
}

你就完成了。您可以将任何您想要的内容放在后面的代码中:方法、属性和事件处理程序。

== Windows 10 应用程序更新 ==

以防万一您正在使用 UWP,还有一件事需要注意:

<Application x:Class="SampleProject.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:rd="using:MyCompany.MyProject">
<!-- no need in x:ClassModifier="public" in the header above -->

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>

                <!-- This will NOT work -->
                <!-- <ResourceDictionary Source="/MyResourceDictionary.xaml" />-->

                <!-- Create instance of your custom dictionary instead of the above source reference -->
                <rd:MyResourceDictionary />

            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

</Application>

关于wpf - 是否可以在 WPF 中的资源字典后面设置代码以进行事件处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/92100/

相关文章:

c# - XBAP 中的键盘快捷键

c# - 将 NLog 与 WPF 富文本框一起使用

c# - WPF 绑定(bind)错误但 CollectionView 仍在过滤

c# - 启用和禁用文本框的不同上下文菜单

c# - 来自解码的 .gif 的不完整图像

c# - 当其他数据绑定(bind)有效时,命令绑定(bind)不起作用

WPF 与自定义内容控件上的 DataContext 绑定(bind)

wpf - System.Windows.Visibility 折叠与隐藏

c# - 通过 WPF 命令模式启用提交/取消按钮

.net - 如何在 WPF MVVM 中使用用户控件