Я хочу добавить пользовательское свойство (через свойство зависимостей) в свой шаблон ToggleButton. Теперь я хочу, чтобы значение содержащейся метки (как заполнителя для будущей реализации) было объединенным значением, например «Hello» и фактическим значением свойства.WPF TemplateBinding Concatenate String для значения
Без конкатенации он прекрасно работает (отображение «Воин» на этикетке)
Но когда я пытаюсь установить метку в виде конкатенации 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);
}
}
, который выглядит как именно то, что я искал, но, к сожалению, он бросает: «Название„HelloLabelConverter“не существует в пространстве имен„CLR-имен:. WpfApplication1“\t WpfApplication1 « , что нечетно, поскольку оно явно существует. Что я здесь делаю неправильно? [.xaml] (http://pastebin.com/Fm7esb4S) [.xaml.cs] (http://pastebin.com/Q8urWFQJ) –
Это трудно понять, что вопрос, когда мы не можем видеть структуру ваших файлов проекта. Ищите учебники о том, как использовать преобразователи значений и посмотрите, помогает ли это –
Это стандартный проект (проект project-> wpf project), но я буду искать учебник по конвертерам значений. –