1

これは、 Xamlでクラスを定義する正しい方法は何ですか?という質問のフォローアップです。

私はなんとかリソースを実行することができ、今楽しんでいます。しかし、この方法でリソースをWindowクラスの一部として定義する必要があることに気付きました。いくつかのサンプルを見て、それらはUserControl、Applicaion、またはWindowのいずれかを使用してリソースをカプセル化しているようです。リソースはUIで使用されるため、これは理にかなっていますが、リソースをカスタムクラスの一部として定義することは可能ですか?Personクラスがある場合、XAMLを使用してそのリソースを定義できますか?Person.XamlとPerson.Xaml.csを使用していますか?

4

2 に答える 2

1

リソースディクショナリ(リソースディクショナリタイプの新しいアイテムの追加)を追加し、このXAMLファイル内にすべてのリソースを含めることができます。リソースディクショナリ内で再利用可能なリソースを定義し、必要な場所で使用することをお勧めします

于 2013-01-31T05:16:45.910 に答える
0

それは少し注意が必要です。Personが単なるクラスである場合、対応するXamlファイルはありません。

1つの方法は、リソースをに保存する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"];
    }
}

もう1つの方法は、独自の方法を作成してResource.Dictionariesにロードすることです。

于 2013-01-31T05:21:29.093 に答える