none
wpf按钮加载图片的一部分的问题 RRS feed

  • 问题

  •  我有一张集成了关闭按钮的三种状态的图片,我想在按钮的三个时期(鼠标移到上面,点击,离开)显示这个图片不同的部分,请给我点意见,我想通过修改模板的触发器来完成,应该怎么做

    2011年5月9日 4:31

答案

  •       <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
              <Grid>
                <Image x:Name="Normal" Source="Normal.png"/>
                <Image x:Name="Pressed" Source="Pressed.png" Visibility="Hidden"/>
                <Image x:Name="Disabled" Source="Disabled.png" Visibility="Hidden"/>
              </Grid>
              <ControlTemplate.Triggers>
                <Trigger Property="IsPressed" Value="True">
                  <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                  <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                  <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                  <Setter TargetName="Disabled" Property="Visibility" Value="Visible"/>
                </Trigger>
              </ControlTemplate.Triggers>
            </ControlTemplate>
          </Button.Template>
    
    你可以按照这个方法做,比如再添加你需要的IsMouseOver 触发器等。
    
    • 已标记为答案 ztx_lingdu 2011年5月9日 7:25
    2011年5月9日 4:47
  • 图片是连在一起的?那就在触发响应事件的时候移动Image的相对Grid位置 ,呈现出那块区域.
    • 已标记为答案 ztx_lingdu 2011年5月12日 1:27
    2011年5月9日 6:36

全部回复

  •       <Button.Template>
            <ControlTemplate TargetType="{x:Type Button}">
              <Grid>
                <Image x:Name="Normal" Source="Normal.png"/>
                <Image x:Name="Pressed" Source="Pressed.png" Visibility="Hidden"/>
                <Image x:Name="Disabled" Source="Disabled.png" Visibility="Hidden"/>
              </Grid>
              <ControlTemplate.Triggers>
                <Trigger Property="IsPressed" Value="True">
                  <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                  <Setter TargetName="Pressed" Property="Visibility" Value="Visible"/>
                </Trigger>
                <Trigger Property="IsEnabled" Value="False">
                  <Setter TargetName="Normal" Property="Visibility" Value="Hidden"/>
                  <Setter TargetName="Disabled" Property="Visibility" Value="Visible"/>
                </Trigger>
              </ControlTemplate.Triggers>
            </ControlTemplate>
          </Button.Template>
    
    你可以按照这个方法做,比如再添加你需要的IsMouseOver 触发器等。
    
    • 已标记为答案 ztx_lingdu 2011年5月9日 7:25
    2011年5月9日 4:47
  • 不是,我的意思是这三个图片在一个图片里面呢,通过不同的事件显示它不同的部分,图片是规则的
    • 已编辑 ztx_lingdu 2011年5月9日 5:27 错字
    2011年5月9日 5:14
  • 图片是连在一起的?那就在触发响应事件的时候移动Image的相对Grid位置 ,呈现出那块区域.
    • 已标记为答案 ztx_lingdu 2011年5月12日 1:27
    2011年5月9日 6:36
  • 请问您这个问题现在解决了么?我也遇到了这个问题,还没搞定。。
    2011年6月7日 3:30