Я использую, ОХВАТЫВАЮТ много, когда я хочу иметь JavaScript, анализируют элемент и вставляют некоторое значение в теге, например:
<span datafield="firstname"></span>
вставили бы значение в него позже, так в этом случае это действительно имеет значение, хотя только подразумевать, что я решаю дать его. То, что промежуток иначе не имеет никакого эффекта на расположение, идеально в этом случае.
Вам не нужны свойства зависимостей, потому что вы наследуете от Button
. У вас уже есть свойства IsPressed
и IsEnabled
. Фактически, это все, что вам нужно:
<Button x:Class="TestWpfApplication.ThreeStateImageButton"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Button.Template>
<ControlTemplate TargetType="{x:Type Button}">
<Grid>
<Image Name="Normal" Source="Resources/Normal.png"/>
<Image Name="Pressed" Source="Resources/Pressed.png" Visibility="Hidden"/>
<Image Name="Disabled" Source="Resources/Disabled.png" Visibility="Hidden"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
<Setter TargetName="Pressed" Property="Visibility" Value="Visible"/>
</Trigger>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
<Setter TargetName="Disabled" Property="Visibility" Value="Visible"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Button.Template>
</Button>
С вашим файлом кода программной части UserControl:
public partial class ThreeStateImageButton : Button
{
public ThreeStateImageButton()
{
InitializeComponent();
}
}