【发布时间】:2014-12-22 09:13:51
【问题描述】:
我有一个如下所示的 wpf 控件:
<Button x:Class="myProject.UI.Controls.MyButton" FocusVisualStyle="{x:Null}" HorizontalContentAlignment="Center" VerticalContentAlignment="Center">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Border x:Name="border" CornerRadius="8" Background="{DynamicResource ResourceKey=BackgroundColor}">
<DockPanel Margin="3">
<Viewbox DockPanel.Dock="Left">
<Image Height="30" Source="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}" Margin="5" VerticalAlignment="Center" HorizontalAlignment="Left" />
</Viewbox>
<TextBlock DockPanel.Dock="Left" Text="{Binding Path=Content,RelativeSource={RelativeSource TemplatedParent}}" FontSize="{Binding Path=FontSize,RelativeSource={RelativeSource TemplatedParent}}" VerticalAlignment="Center" Padding="10,0,10,0" HorizontalAlignment="Left"/>
<Image DockPanel.Dock="Right" Source="{DynamicResource ResourceKey=Bmp}" Height="30" Width="30" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,0,10,0"></Image>
</DockPanel>
</Border>
</ControlTemplate>
</Button.Template>
当我在我看来使用它时,这就是我写的:
<controls:MyButton FontSize="24" Width="210" Height="60" Foreground="White" Tag="{Binding Source={x:Static properties:Resources.backArrow}, Converter={StaticResource BitmapToImageSourceConverter}}" Content="{DynamicResource BackArrowButton}" Command="{Binding Path=GoToPreviousPage}" Margin="60 0 0 0">
<Button.Resources>
<Brush x:Key="BackgroundColor">#005BB5</Brush>
</Button.Resources>
</controls:ImageButton>
问题是我的项目中有几个这个按钮的实例。在其中一些中,第一张图像(在视图框中)的高度应该是 30,而在其中一些需要是 10。
如何从按钮的每个实例中设置第一张图像的高度?例如,像这样:
<controls:MyButton **HeightOfTheFirstImage**="10" FontSize="24" Width="210" Height="60" Foreground="White" Tag="{Binding Source={x:Static properties:Resources.backArrow}, Converter={StaticResource BitmapToImageSourceConverter}}" Content="{DynamicResource BackArrowButton}" Command="{Binding Path=GoToPreviousPage}" Margin="60 0 0 0">
<Button.Resources>
<Brush x:Key="BackgroundColor">#005BB5</Brush>
</Button.Resources>
</controls:ImageButton>
【问题讨论】:
-
我看到了这个
myProject.UI.Controls.MyButton,这意味着你的Button有自己的自定义类,所以你可以随时添加一些属性,比如FirstImageHeight,然后将第一个图像的高度绑定到该属性。使用 Button 时,您可以按需设置该属性。
标签: wpf button user-controls