WPF按钮图标以编程方式更改

时间:2015-07-14 12:39:34

标签: c# wpf

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

<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#

1 个答案:

答案 0 :(得分: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更改内容,以便用户界面可以更新Image。但是,必须说使用TriggerDataTrigger来更改XAML中的Image.Source将是更好的解决方案。