这是问题What is the correct way to define classes in Xaml?
的后续问题我已经设法让资源运行,现在玩得很开心。但我意识到我必须以这种方式将资源定义为Window类的一部分,我已经看到了一些示例,他们似乎使用UserControl,Applicaion或Window来封装资源。这很有道理,因为资源将在UI中使用,但我想问,是否可以将资源定义为自定义类的一部分?如果我有Person类,我可以使用XAML为它定义资源吗?使用Person.Xaml和Person.Xaml.cs?
答案 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
并加载它们。