0

ボタン スタイルとベクター グラフィックを持つ XAML で定義されたボタンがあり、次のように定義されています。

    <Button
        Height="48"
        Width="48"
        mvp:Presenter.Action="CreateStudentApplication"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        Grid.Row="5"
        Grid.Column="3"
        Style="{DynamicResource BaseButton2}">
        <ContentControl Template="{StaticResource ApplicationVector}"/>
    </Button>

私のコード ビハインドには、これに似た新しいボタンを StackPanel に動的に追加するメソッドがあります。簡単に言えば、次のようなことを行います。

            var button = new Button();
            button.Height = 48;
            button.Width = 48;
            button.Tag = x.ID;
            button.SetResourceReference(TemplateProperty, "ApplicationVector");
            button.SetResourceReference(StyleProperty, "BaseButton2");

ここで奇妙な部分があります。ベクター グラフィックのみが表示され、その後ろにボタンは表示されません。最後から 2 番目の行 (ベクトル参照のある行) を削除すると、本来あるべきスタイルのボタンが表示されます! テンプレートを設定するとスタイルがオーバーライドされると想定していますが、XAML では友好的に機能しているようです。また、TemplateProperty の代わりに ContentProperty を設定しようとしましたが、これは型の文字列になりました。何か案は?ありがとうございました!

4

1 に答える 1

0

XAML とコード ビハインドは同等ではありません。XAML ではContent、ボタンのプロパティを に設定していますContentControl。コード ビハインドでは、Template(またはContent) プロパティをApplicationVectorリソースに設定しています。

ボタンのプロパティを、プロパティがリソースに設定されているContentのインスタンスに設定する必要があります。ContentControlTemplateApplicationVector

var contentControl = new ContentControl();
contentControl.SetResourceReference(TemplateProperty, "ApplicationVector");
button.Content = contentControl;
于 2011-12-06T23:19:23.723 に答える