Я немного новичок в 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. Эти свойства должны иметь тип string, а не Uri. Я хочу использовать путь к изображению просто "apply.png", а не "pack: // application: ,,, / Resources / Apply.png".
Я думаю, чтобы иметь такие пользовательские свойства, мне нужен UserControl со свойствами зависимостей?
В принципе, я хочу использовать кнопку следующим образом:
<MyImageButton NormalImage="apply.png" DisabledImage="apply_disabled.png"/>
Возможно, NormalImage / DisabledImage будет привязан к чему-то позже, но это маловероятно.
Я не смог найти ни одного примера, который бы реализовывал такую базовую кнопку с настраиваемыми свойствами, в Интернете есть только несколько необычных кнопок и элементов управления. Может быть, я просто использую неправильные ключевые слова ...
Может ли кто-нибудь указать мне правильную статью или скинуть какой-нибудь простой фрагмент кода для игры?
WPF настолько сложен для начинающих, иногда он просто не работает должным образом, например, я до сих пор не понимаю, почему я могу добавить тег Trigger в ControlTemplate, но я не могу добавить тег Trigger прямо в UserControl ...