Настройка содержимого кнопки в стиле
У меня есть кнопка WPF, определенная следующим образом:
<Button Style="{StaticResource RevertButtonStyle}" />
вот как выглядит стиль:
<Style x:Key="RevertButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Height" Value="25" />
<Setter Property="Width" Value="20" />
<Setter Property="Margin" Value="3,0,0,0" />
</Style>
Как изменить стиль, чтобы указать Content для использования изображения с именем "revert.png"?
Спасибо,
Ответы
Ответ 1
Вы не можете использовать свойство Content для экземпляра элемента управления Image
, так как тогда изображение может использоваться более чем одной кнопкой. Это приведет к тому, что исключение "visual is is a child of another visual".
Вместо этого вы можете использовать DataTemplate следующим образом:
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Image Source="revert.png" />
</DataTemplate>
</Setter.Value>
</Setter>
Очевидно, вам может потребоваться настроить URI источника изображения.
Ответ 2
В моем приложении я определил элемент управления ImageButton
, который указывает свойство ImageSource
.
Это выглядит так:
<Style TargetType="{x:Type controls:ImageButton}">
<Setter Property="ForceCursor" Value="True" />
<Setter Property="Cursor" Value="Hand" />
<Setter Property="ToolTip" Value="{Binding Path=Caption, RelativeSource={RelativeSource Mode=Self}}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type controls:ImageButton}">
<Image Width="16" Height="16" Source="{Binding Path=ImageSource, RelativeSource={RelativeSource Mode=TemplatedParent}}" Name="image" />
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter TargetName="image" Property="Opacity" Value="0.3" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Но в вашем случае, если вы хотите использовать одно и то же изображение для всех объектов Button
с определенным набором Style
, вы можете просто использовать <Image Source="pack://application:,,,/My.Assembly.Name;component/Icons/revert.png" />
в Template
, если изображение, которое вы хотите использовать был включен как ресурс в приложении.