【问题标题】:Problem with Icon binding in WPF FluentWPF Fluent 中的图标绑定问题
【发布时间】:2011-07-28 10:56:18
【问题描述】:

我正在使用来自 fluent.codeplex.com 的 Fluent。

这适用于我的 XAML 文件:

<Image Name="image1" Stretch="Fill" Height="40" 
       HorizontalAlignment="Left"         
       VerticalAlignment="Top" Width="40" 
       Source="{StaticResource error_button}" />

并显示图像。

当我尝试将它用作流畅按钮的图标时

<Fluent:Button Header="adsfasf">
  <Fluent:Button.Icon>
  <Image Height="40" HorizontalAlignment="Left" VerticalAlignment="Top" Width="40"    
         Source="{StaticResource error_button}" />
  </Fluent:Button.Icon>
</Fluent:Button>

按钮没有图标。我错过了什么吗?

【问题讨论】:

  • 你能说明你是如何定义error_button资源的吗?

标签: wpf binding icons ribbon fluent


【解决方案1】:

我对 Fluent Ribbon 组件不熟悉,但是查看源代码,它使用它来显示按钮图标:

http://fluent.codeplex.com/SourceControl/changeset/view/57318#527240

<ContentPresenter 
  ...
  Content="{Binding LargeIcon, RelativeSource={RelativeSource TemplatedParent}, Converter={StaticResource StringToImageConvert}}" />

StringToImageConvert 定义为:

<Fluent:ObjectToImageConverter x:Key="StringToImageConvert"/>

该转换器中 Convert 方法的实现如下所示(通过反射器 - Fluent 开发人员需要更好地将类分离到他们自己的文件中)。

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
    if (value is string)
    {
        Image image = new Image();
        image.Stretch = Stretch.None;
        image.Source = new BitmapImage(new Uri(value as string, UriKind.RelativeOrAbsolute), new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore));
        return image;
    }
    if (value is ImageSource)
    {
        Image image2 = new Image();
        image2.Stretch = Stretch.None;
        image2.Source = (ImageSource) value;
        return image2;
    }
    return value;
}

所以从代码来看,你最好试试这个:

<Fluent:Button 
    Header="adsfasf" 
    Icon="{StaticResource error_button}" 
    LargeIcon="{StaticResource error_button}" 
    />

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-03
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多