【问题标题】:Images disappear from the ListView in WPF after an action操作后图像从 WPF 中的 ListView 中消失
【发布时间】:2017-10-10 09:05:48
【问题描述】:

图像正确加载到列表视图,但是每当我单击列表视图并更改 SelectedItem 时,图像就会消失。我可以看到元素并用它们做所有事情,但它们是一个简单的行,图像本身不在行中。 这是 ListView 的 XAML

<ListView Name="testLB" ItemsSource="{Binding Images}" SelectedItem="{Binding SelectedImage}" HorizontalAlignment="Left" Height="393" Margin="627,28,0,0" VerticalAlignment="Top" Width="244" SelectionChanged="testLB_SelectionChanged"/>

这是我的 ViewModel 的一部分。

public ObservableCollection<Image> Images { get; private set; }
    public Image SelectedImage { get => selectedImage;
        set {
            this.selectedImage = value;
            this.OnPropertyChanged("SelectedImage");
        } }

    private Image selectedImage;

【问题讨论】:

  • 为什么你的视图模型中有 UI 元素 Image?您没有提供完整且可验证的示例,但我认为 Image 的错误使用是问题的很大一部分

标签: wpf xaml listview listbox


【解决方案1】:

Image 是 UIElement 的子类,因此不应用作视图模型中的项目类型。

请改用ImageSource(并将例如 BitmapImages 或 BitmapFrames 添加到您的集合中):

public ObservableCollection<ImageSource> Images { get; private set; }

public ImageSource SelectedImage { ... }

然后让你的 ListView 的 ItemTemplate 包含一个 Image 元素:

<ListView ItemsSource="{Binding Images}" SelectedItem="{Binding SelectedImage}" ...>
    <ListView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

【讨论】:

  • 谢谢!永远不会猜到这可能会导致这样的问题。现在可以完美运行了。
猜你喜欢
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 2015-01-25
  • 2010-10-15
  • 2011-08-29
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多