【问题标题】:Set Button Image in ControlTemplate在 ControlTemplate 中设置按钮图像
【发布时间】:2014-03-01 17:19:13
【问题描述】:

我的 WPF 应用程序中有这个图像按钮:

<Button Grid.Column="2" Content="Play" Focusable="False" Width="100" Height="60" HorizontalAlignment="Left" VerticalAlignment="Center" Name="PlayPauseButton" Click="PlayPauseButton_Click">
    <Button.Template>
        <ControlTemplate>
            <Image x:Name="PlayPauseImage" Visibility="Visible" Stretch="Uniform" Source="/PlayTube;component/images/PlayerApplication/PlayButton.png" />
        </ControlTemplate>
    </Button.Template>
</Button>

我希望能够以编程方式设置Image,但我无法访问PlayPauseImage。

知道为什么会这样吗?

【问题讨论】:

    标签: c# wpf image button controltemplate


    【解决方案1】:

    尝试使用FindName:

    private void PlayPauseButton_Click(object sender, RoutedEventArgs e)
    {
        Image image = (Image)PlayPauseButton.Template.FindName("PlayPauseImage", PlayPauseButton);
    }
    

    Note: 只有在控件将完全加载时才使用FindName,否则找不到它并给出null。

    对于本次活动还有:

    ContentRendered for Window

    Loaded

    【讨论】:

      【解决方案2】:

      确保Button 是Loaded.. 所以最好使用Loaded 事件来获取这个...

      private void ButtonBase_Loaded(object sender, EventArgs e)
      {
          var image = PlayPauseButton.Template.FindName("PlayPauseImage", PlayPauseButton) as Image;
      }
      

      【讨论】:

        【解决方案3】:

        您可以使用FrameworkTemplate.FindName 在您的ControlTemplate 中定位控件

        var img = PlayPauseButton.Template.FindName("PlayPauseImage", PlayPauseButton) as Image;
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-03
          • 2020-03-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多