【发布时间】:2017-09-29 19:28:00
【问题描述】:
我正在使用我的 USB 网络摄像头(aforge 库)捕获图像并将捕获的图像存储在 ObservableColection
public ObservableCollection<BitmapImage> Images { get; set; }
Images 是我的视图模型类的属性。
class MainViewModel : INotifyPropertyChanged
private ObservableCollection<BitmapImage> images = new ObservableCollection<BitmapImage>();
public ObservableCollection<BitmapImage> Images
{
get
{
return this.images;
}
set
{
if (images == value)
return;
this.images = value;
OnPropertyChanged("Images"); // Using the INotifyPropertyChanged interface to raise property change events
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
在我的SecondWindow 中,我想在Listview 中显示捕获的图像。试过这个绑定:
private SecondWindow OwnerWindow;
public MainViewModel OwnerWindowViewmodel { get; set; }
在构造函数中
this.OwnerWindow = (SecondWindow)window;
this.OwnerWindowViewmodel = OwnerWindow.OwnerWindowViewmodel;
OwnerWindowViewmodel = (MainViewModel)this.DataContext;
Xaml:
<ListView x:Name="ListView" ItemsSource="{Binding Images, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Height="345" Margin="567,10,10,0" VerticalAlignment="Top">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1" HorizontalAlignment="Center" VerticalAlignment="Top"/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<Image Source="{Binding}" Height="150" Width="150"/>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
但我的Listview 中没有任何内容。我已经通过添加断点和调试捕获图像的数量及其在断点处的正确性进行了测试(假设我已经捕获了 2 张图像,图像数量为 2)
如何在我的Listview 中显示捕获的图像?
【问题讨论】:
-
调试输出中是否有任何绑定错误?
-
你的 ViewModel 设置为 DataContext 了吗?
-
如果您不向我们提供最基本的信息,您认为我们可以如何帮助您?如何创建和显示 SecondWindow,以及如何将视图模型实例传递给它的 DataContext?
-
请注意,在 ItemsSource Binding 上设置
Mode=TwoWay和UpdateSourceTrigger=PropertyChanged是没有意义的。 -
我已在我的视图中将 ViewModel 设置为 DataContext
标签: wpf listview binding observablecollection