我有一个Control
和一个HtSideBarItem
的{{1}}-。现在,在80%的情况下,我将ContentProperty
设置为CustomButton
。现在,我想创建第二个类Content
,该类继承默认的HtSideBarButton
并设置默认内容。
style
[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>
现在这可以按预期工作,但有一个问题。我想拥有<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
数据的功能更改内容?