【问题标题】:Set ImageSource through ViewModel not working通过 ViewModel 设置 ImageSource 不起作用
【发布时间】:2012-09-29 18:28:26
【问题描述】:

我有一个 WPF 应用程序,我在其中使用了多个图像。大多数图像都在 XAML 代码中设置,因为它们不再更改。我所有图像文件的 Build Action 设置为 "Resource"Copy to Output Directory 设置为 "Do不复制”。它们按预期显示,以下是它们的设置示例:

<ribbon:RibbonApplicationMenu SmallImageSource="/Voetbal;component/Images/Ball_16.png">
//or
<ribbon:RibbonButton LargeImageSource="/Voetbal;component/Images/Calendar_32.png" />
//or
<Image Source="/Voetbal;component/Images/remove.png" Width="16" Height="16" />

但我也有必须通过 C# 设置的图像。在 UserControl 中,我有一个 ListView,其中包含带有以下标记的特定列:

<GridViewColumn Header="" Width="32">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Image Source="{Binding Icon}" />
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

ListView 的 ItemsSource 是一个通用列表,其中包含将填充 ListView 的项目的实例。这些项目有两个字符串字段和一个 ImageSource(名为“Icon”)。我这样设置图标属性:

var icon = new BitmapImage(new Uri("/Images/Gold_16.png", UriKind.RelativeOrAbsolute));
myViewModel.Items[0].Icon = icon;

但问题是我在 ListView 中看不到图像。我也尝试过以下代码。我在 SO 和其他论坛上使用了这些来自类似问题的答案的文章。不是我偷懒或者什么都没尝试,而是我不知道如何解决这个问题……

var icon = new BitmapImage(new Uri("/Voetbal;component/Images/Gold_16.png", UriKind.RelativeOrAbsolute));

//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Voetbal;component/Images/Gold_16.png");
icon.EndInit();

//or
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Images/Gold_16.png");
icon.EndInit();

PS:我知道我的 ViewModel 的绑定有效,因为这两个字符串属性正确显示在 ListView 的其他列中。

有谁知道如何设置 ImageSource 并将其正确绑定到 ListView?

提前致谢!

【问题讨论】:

  • 输出窗口中是否有任何绑定错误?顺便说一句,你的视图模型的Icon属性可以是string,不需要在代码中构造ImageSource
  • 没有任何绑定错误或异常。所以你的意思是 Icon 可以是一个字符串,但是值应该是什么?因为我尝试了 Ehsan 的建议,但没有成功。
  • 正如您在我的原始帖子中看到的那样,我尝试了几种方法。因此我的问题是:那么价值应该是多少?
  • 我测试了一些额外的代码:StackOverFlow_ListView

标签: c# wpf mvvm datacontext imagesource


【解决方案1】:
myViewModel.Items[0].Icon = "Images/Gold_16.png";

请试试上面的代码。将 Icon 属性设为字符串

【讨论】:

    猜你喜欢
    • 2021-07-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2021-12-18
    • 2018-06-15
    • 1970-01-01
    • 2021-09-14
    相关资源
    最近更新 更多