如何为自定义类定义资源

时间:2013-01-31 05:01:18

标签: wpf wpf-controls

这是问题What is the correct way to define classes in Xaml?

的后续问题

我已经设法让资源运行,现在玩得很开心。但我意识到我必须以这种方式将资源定义为Window类的一部分,我已经看到了一些示例,他们似乎使用UserControl,Applicaion或Window来封装资源。这很有道理,因为资源将在UI中使用,但我想问,是否可以将资源定义为自定义类的一部分?如果我有Person类,我可以使用XAML为它定义资源吗?使用Person.Xaml和Person.Xaml.cs?

2 个答案:

答案 0 :(得分:0)

您可以添加资源字典(添加资源字典类型的新项目),并且可以拥有此XAML文件中的所有资源。在资源字典中定义可重用资源并在需要的地方使用

是一种很好的做法

答案 1 :(得分:0)

这有点棘手,如果Person只是一个类,它就没有任何相应的Xaml文件。

一种方法是将资源存储在App.Xaml中,然后您就可以从应用程序的任何位置访问这些资源。

示例:

的App.xaml

<Application x:Class="WpfApplication13.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Storyboard x:Key="MyAnimation" Storyboard.TargetProperty="Opacity">
            <DoubleAnimation From="0" To="1" Duration="0:0:5" />
        </Storyboard>
    </Application.Resources>
</Application>

人类

public class Person
{
    public Person()
    {
        var storyboard = (Storyboard)Application.Current.Resources["MyAnimation"];
    }
}

另一种方法是创建自己的Resource.Dictionaries并加载它们。