【问题标题】:Change Image source inside a Button template更改按钮模板内的图像源
【发布时间】:2011-05-31 10:46:34
【问题描述】:

我在 WPF 应用程序中有一个按钮。我正在呈现图像而不是按钮。 当我的应用程序启动时,所有控件都被禁用,直到用户登录。我希望我的应用程序以按钮开始,它的图像是灰色的-->禁用。当有人登录时,我想更改为彩色图像。但我无法访问按钮模板中的图像。谁能帮忙?谢谢。

我的按钮代码 -

<Button  Height="55" Background="CornflowerBlue" Foreground="White" FontWeight="Normal" Name="Button_Cancel" FontSize="12" VerticalAlignment="Bottom" HorizontalAlignment="Left" Width="55" Click="Button_Cancel_Click">
        <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
                <StackPanel >
                    <Image Source="Images/myImage.png" Name="Image_Cancel"/>
                </StackPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsMouseOver" Value="True">
                        <Setter Property="Button.BitmapEffect" >
                            <Setter.Value>
                                <DropShadowBitmapEffect Color="LightGray" Direction="300" ShadowDepth="5" >
                                </DropShadowBitmapEffect>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                    <Trigger Property="IsPressed" Value="True">
                        <Setter Property="Button.RenderTransform">
                            <Setter.Value>
                                <TransformGroup>
                                    <ScaleTransform CenterX="0.5" CenterY="0.5" ScaleX="0.970" ScaleY="0.970">
                                    </ScaleTransform>
                                    <!--<SkewTransform AngleY="2" CenterY="-100"/>-->
                                </TransformGroup>
                            </Setter.Value>
                        </Setter>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Button.Template>
    </Button>

【问题讨论】:

    标签: c# .net wpf image button


    【解决方案1】:

    您可以通过触发器将图像与IsEnabled 属性挂钩,那么您可能不需要代码隐藏访问。

    <Image>
        <Image.Style>
            <Style TargetType="{x:Type Image}">
                <Setter Property="Source" Value="Images/Image_Normal.png" />
                <Style.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="Source" Value="Images/Image_Disabled" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </Image.Style>
    </Image>
    

    【讨论】:

      【解决方案2】:

      你可以这样做..

      <StackPanel >
           <Image x:name="MyImage" Source="Images/myImage.png" Name="Image_Cancel"/>
      </StackPanel>
      

      以及当您想要访问或修改图像时

      <Setter Property = "Source" TargetName = "MyImage" value = "something"/>
      

      【讨论】:

      • 谢谢。但是我想从后面的代码中访问图像,我仍然做不到......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      • 2012-02-05
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多