У меня есть Control
- HtSideBarItem
с ContentProperty
. Теперь в 80% случаев я установил CustomButton
как Content
. Теперь я хотел бы создать второй класс HtSideBarButton
, который наследует значение по умолчанию style
и установить содержимое по умолчанию.
HtSideBarItem (Trimmed)
[ContentProperty("Content")]
public class HtSideBarItem : Control
{
public DataTemplate ContentTemplate
{
get => (DataTemplate) GetValue(ContentTemplateProperty);
set => SetValue(ContentTemplateProperty, value);
}
public static readonly DependencyProperty ContentTemplateProperty = DependencyProperty.Register("ContentTemplate", typeof(DataTemplate), typeof(HtSideBarItem));
public object Content
{
get => GetValue(ContentProperty);
set => SetValue(ContentProperty, value);
}
public static readonly DependencyProperty ContentProperty = DependencyProperty.Register("Content", typeof(object), typeof(HtSideBarItem));
}
<Style TargetType="sideBar:HtSideBarItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="sideBar:HtSideBarItem">
<Grid>
<ContentControl Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
XAML HtSideBarButton
<Style TargetType="sideBar:HtSideBarButton" BasedOn="{StaticResource {x:Type sideBar:HtSideBarItem}}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<controls:CustomButton
Height="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=sideBar:HtSideBarButton}, Path=Height}"
Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=sideBar:HtSideBarButton}, Path=Text}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
Теперь это работает как положено, с одной проблемой. Я хотел бы иметь designTime
данные. Но это невозможно из-за DataTemplate
. Так есть ли лучший способ иметь «базовый стиль», наследовать и просто изменять содержимое с возможностью designTime
data?