【问题标题】:Image source value - a combination of hardcoded strings and binding图像源值 - 硬编码字符串和绑定的组合
【发布时间】:2014-07-08 18:25:49
【问题描述】:

我的 xaml 中有一张图片:

<Image Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Width="30" Height="30"></Image>

图片的来源是这样的:

..\Images\MyFolder\1.png
..\Images\MyFolder\2.png
..\Images\MyFolder\3.png

基本上,.png 文件的名称就是项目的 id。

在我的 ViewModel 中,我有一个代表 id 的字段,它的名称是 myId。

如何添加这种源 - 具有两个硬编码值和一个绑定值?

【问题讨论】:

  • 通过另一个返回图像路径的视图模型属性,或通过适当的绑定转换器,将您的 ID 转换为图像路径字符串、URI 或 ImageSource。

标签: wpf image xaml data-binding


【解决方案1】:

将图片源与id绑定,并应用转换器创建图片路径。

xaml 将是:

ente<Image Source="{Binding Path=myId, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, Converter={StaticResource ConvImageSource}}"/>

并在顶部添加资源:

<Window.Resources>
    <local:ImageSourceConverter x:Key="ConvImageSource"/>
</Window.Resources>

转换器可以是:

public class ImageSourceConverter : IValueConverter
{        
    #region IValueConverter Members

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        String myId = System.Convert.ToString(value);
        String imagePath = SPECIFY_IMAGE_PATH;
        String imageExtn = SPECIFY_IMAGE_Extn;

        // Create the image source
        String imageSource = String.Concat(imagePath, myId, imageExtn);

        return imageSource;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return value;
    }

    #endregion
}

希望这会有所帮助。

【讨论】:

  • 我收到错误:{“无法将'System.Windows.Media.ImageSourceConverter'类型的对象转换为'System.Windows.Data.IValueConverter'。”}
  • ConvertBack处放一个断点;如果您在这里遇到异常,那么您需要根据要求实现您的ConvertBack
  • Convert 和 ConvertBack 都没有命中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-05
  • 1970-01-01
  • 1970-01-01
  • 2016-06-04
相关资源
最近更新 更多