好吧,我有一个WPF应用程序,其中我有一个资源字典 . 在字典中,我有一个 Button
的新样式,如下所示:
<Style x:Key="MenuButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Image x:Name="Imager" RenderOptions.BitmapScalingMode="HighQuality" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Tag}" VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="UniformToFill"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Imager" Property="Width" Value="24" />
<Setter TargetName="Imager" Property="Height" Value="24" />
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="Imager" Property="Width" Value="16" />
<Setter TargetName="Imager" Property="Height" Value="16" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
并在我的XAML中使用这个stye像这样:
<Button x:Name="Home" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Home.png"/>
<Button x:Name="Settings" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Settings.png"/>
现在我想要做的是,在名为 OverWidth
和 OverHeight
的 Button
样式中创建一个新属性,以便像这样使用它:
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Imager" Property="Width" Value= OVERWIDTH/>
<Setter TargetName="Imager" Property="Height" Value= OVERHEIGHT/>
</Trigger>
在XAML中:
<Button x:Name="Home" Style="{DynamicResource MenuButtonStyle}" Width="20" Height="20" Tag="\Images\Home.png" OVERWIDTH = "24"/>
我甚至不知道这是否可行 . 我不想从C#代码中使用 Binding SomeIntenger
. 提前致谢 .
2 回答
您可以使用attached properties:
XAML:
我使用 Tag property ,效果很好 . 我可以在 Tag 上写任何东西
例如 Button 上的(AXML):
我可以使用字符串字段将列表或值 int , date 等添加到 interpret 和 convert 字符串中 .
**我使用此解决方案,因为需要为按钮添加ID字段 .