1

カスタム プロパティを (依存関係プロパティ経由で) カスタム ToggleButton テンプレートに追加したいと考えています。ここで、含まれているラベルの値を(将来の実装のプレースホルダーとして)「Hello」と実際のプロパティ値の連結値にしたいと考えています。

連結しなくても問題なく動作します(ラベルに「Warrior」が表示されます)

しかし、ラベルを連結として設定しようとすると、xaml はもうコンパイルされません。

<Label Content="Hello {TemplateBinding local:HeroClassCheckbox.HeroClass}"/>

どうすればこれを達成できますか?

コードの残りの部分:

私の.xaml

<Window.Resources>
    <ResourceDictionary>
        <Style x:Key="HeroClassCheckbox" TargetType="ToggleButton">
            <Setter Property="Content" Value="Green" />
            <Setter Property="local:HeroClassCheckbox.HeroClass" Value="NoClass"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Label Content="{TemplateBinding local:HeroClassCheckbox.HeroClass}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ResourceDictionary>
</Window.Resources>
<Grid>
    <ToggleButton Width="150" Height="50" local:HeroClassCheckbox.HeroClass="Warrior" Style="{DynamicResource HeroClassCheckbox}"/>
</Grid>

私の .xaml.cs

public static class HeroClassCheckbox
{
    public static readonly DependencyProperty HeroClassProperty = DependencyProperty.RegisterAttached("HeroClass",
        typeof(string), typeof(HeroClassCheckbox), new FrameworkPropertyMetadata(null));

    public static string GetHeroClass(UIElement element)
    {
        if (element == null)
            throw new ArgumentNullException("element");
        return (string)element.GetValue(HeroClassProperty);
    }
    public static void SetHeroClass(UIElement element, string value)
    {
        if (element == null)
            throw new ArgumentNullException("element");
        element.SetValue(HeroClassProperty, value);
    }
}
4

1 に答える 1