Я немного новичок в WPF и XAML, сейчас только учусь.
Я нашел быстрый и грязный код от какого-то предыдущего разработчика:
<ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">
<Border Name="buttonBorder" Background="{TemplateBinding Background}">
<Border.Effect>
<DropShadowEffect Opacity="0.0" />
</Border.Effect>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="buttonBorder" Property="Effect">
<Setter.Value>
<DropShadowEffect Opacity="0.8" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsMouseCaptured" Value="true">
<Setter TargetName="buttonBorder" Property="Effect">
<Setter.Value>
<DropShadowEffect Opacity="0.8" Direction="135"
ShadowDepth="3" BlurRadius="1" />
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="buttonBorder" Property="Background">
<Setter.Value>
<ImageBrush ImageSource="{Binding Path=Tag, RelativeSource={RelativeSource TemplatedParent}}" />
</Setter.Value>
</Setter>
<Setter TargetName="buttonBorder" Property="Effect">
<Setter.Value>
<DropShadowEffect Opacity="0.0"/>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
По сути, это просто шаблон для кнопки с базовым эффектом наведения мыши и изображение для отключенного состояния, привязанного к тегу (кажется уродливым решением).
Я хочу создать настраиваемую кнопку, которая работает примерно так же, но я хочу предоставить два настраиваемых свойства: NormalImage и DisabledImage. Эти свойства должны быть строкового типа, а не Uri. Я хочу использовать путь к изображению только «apply.png», а не «pack: // application: ,,, / Resources / Apply.png». Я думаю, чтобы иметь такие настраиваемые свойства, мне нужен UserControl со свойствами зависимости?
По сути, я хочу использовать кнопку следующим образом:
<MyImageButton NormalImage="apply.png" DisabledImage="apply_disabled.png"/>
Возможно, NormalImage / DisabledImage будет привязан к чему-то позже, но это маловероятно.
Я не смог найти ни одного примера, который реализует такую базовую кнопку с настраиваемыми свойствами, в Интернете есть только несколько причудливых кнопок и элементов управления. Может, я просто использую неверные ключевые слова ...
Может ли кто-нибудь указать мне нужную статью или добавить простой фрагмент кода, с которым можно поиграться?
WPF настолько сложен для новичков, что иногда он просто не работает должным образом, например, я до сих пор не понимаю, почему я могу добавить тег Trigger в ControlTemplate, но я не могу добавить тег Trigger прямо в UserControl ...