[英]WPF customControl and template inheritance
我在查找如何处理ImageButton模板时遇到了一些麻烦。
为了简单起见:通过遵循本教程,我创建了一个新的customControl ImageButton: http : //www.codeproject.com/Tips/773386/WPF-ImageButton
到目前为止,效果很好。
但是,在我的应用程序中,按钮具有不同的可能主题(在应用程序启动时就知道)。 和我不同的按钮主题是这样定义的:
<Style x:Key="MONDE0_ImageActionButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Name="BaseBorder" CornerRadius="5" BorderThickness="1" BorderBrush="Black" Background="{DynamicResource DefaultBlueButton}">
<ContentPresenter VerticalAlignment="Bottom" HorizontalAlignment="Right" Margin="0,0,2,0">
</ContentPresenter>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="BaseBorder" Property="Background" Value="{StaticResource DefaultOverBlueButton}" />
</Trigger>
<Trigger Property="Button.IsPressed" Value="True">
<Setter TargetName="BaseBorder" Property="Background" Value="{StaticResource DefaultClickedBlueButton}" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
问题是,当我尝试通过执行以下操作将此主题应用于imgButton时:
<VegaCtr:ImageButton x:Name="btn_Send" Margin="5" Style="{DynamicResource MONDE0_actionButton}" Width="105" Height="40" ToolTip="Envoyer" Command="{Binding SendCommand}"
Image="pack://application:,,,/Vega_WPF_Themes;component/Themes/Common/Images/Yes.png" Content="Valider"/>
我的imagebutton样式
<Style TargetType="{x:Type local:ImageButton}" x:Name="StyleImgButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:ImageButton}">
<!-- Button Content -->
<StackPanel Orientation="Horizontal" HorizontalAlignment="Left">
<Image Source="{TemplateBinding Image}" Visibility="{TemplateBinding Image, Converter={StaticResource VisibilityConvertor}}"
Width="{TemplateBinding ImageWidth}" Height="{TemplateBinding ImageHeight}" Margin="0,0,5,0" />
<TextBlock Text="{TemplateBinding Content}" Style="{StaticResource buttonLabel}" TextWrapping="Wrap" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
imageButton的基本模板不起作用。 当我删除样式属性时,它就起作用了...所以,我的问题是,如何使它起作用? 我需要有基本的imageButton模板,并可能添加其他样式(带有触发器;等等。)。 这可能吗 ?
谢谢 !
在样式上使用basedOn属性设置基本样式
<Style x:Key="MONDE0_ImageActionButton" TargetType="Button" BasedOn="{StaticResource "My_BaseStyle"}>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.