【问题标题】:WPF button icon change programmaticallyWPF 按钮图标以编程方式更改
【发布时间】:2015-10-03 02:29:18
【问题描述】:

我想以编程方式更改以下按钮的图标

<Button x:Name="btnSendInvite" Height="32" Background="Transparent" BorderBrush="Transparent"
    BorderThickness="0" Cursor="Hand" Margin="1,5" ToolTip="Call" Click="btnSendInvite_Click" >
                    <Button.Template>
                        <ControlTemplate TargetType="Button">

                                <DockPanel>
                                    <DockPanel.Background>
                                        <ImageBrush ImageSource="Resources/button.png" />
                                    </DockPanel.Background>
                                    <StackPanel Orientation="Horizontal">
                                        <Image Source="Resources/dial.png" Height="30" Margin="14,0"></Image>
                                    </StackPanel>
                                </DockPanel>

                        </ControlTemplate>
                    </Button.Template>
                    <Button.Style>
                        <Style TargetType="Button">
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver" Value="True">
                                    <Setter Property="Background" Value="Black"/>
                                    <Setter Property="Foreground" Value="White"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>
                </Button>

需要将dial.png 图标更改为hangup.png。在c#中怎么可能

【问题讨论】:

标签: c# wpf


【解决方案1】:

如果您绝对必须使用代码更改图像,那么您应该数据绑定Image.Source 属性,然后更改您的数据绑定图像路径:

<StackPanel Orientation="Horizontal">
    <Image Source="{Binding ImageSource}" Height="30" Margin="14,0" />
</StackPanel>

您的新属性的默认值为Resources/dial.png,您可以像这样更改它:

ImageSource = "Resources/hangup.png";

当然,您的ImageSource 属性必须将更改通知INotifyPropertyChanged Interface,以便UI 可以更新Image。不过不得不说,用Trigger或者DataTrigger来改变XAML中的Image.Source会是更好的解决方案。

【讨论】:

  • 当然,正确的做法是在你的虚拟机中放入一个枚举,然后使用转换器将枚举转换为绑定中的一对&lt;Image /&gt;
猜你喜欢
  • 2011-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-14
  • 1970-01-01
  • 2021-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多