カスタム プロパティを (依存関係プロパティ経由で) カスタム 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);
}
}