我有一个Listview
并且为ItemsSource
我设置了CollectionOfCapturedImages
(ObservableCollection
),一个Button
用于删除已选中来自BitmapImage
以及来自Listview
的{{1}}项ObservableCollection
以及Label
显示捕获图像数量的MainWindow
。
private void addNewImageButton_Click(object sender, RoutedEventArgs e)
{
CameraWindow cWindow = Application.Current.Windows.OfType<CameraWindow>().FirstOrDefault();
RoutedEventArgs newEventArgs = new RoutedEventArgs(Button.ClickEvent);
cWindow.manualCapture.RaiseEvent(newEventArgs);
// ListView.ScrollIntoView(ListView.Items.Count - 1);
}
public ObservableCollection<BitmapImage> CollectionOfCapturedImages { get; } = new ObservableCollection<BitmapImage>();
<ListView x:Name="ListView" ItemsSource="{Binding CollectionOfCapturedImages}" 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>
这就是我在Label
中更新MainWindow
的方式。当我拍摄图片时没有问题,Label
的内容会更新。
public Action<int> amountOfCapturedImages;
this.cameraWindow = new CameraWindow(this);
cameraWindow.amountOfCapturedImages += (int count) => {
MwAmountOfImagesLabel.Content = count;
};
这是我的删除按钮
<Button x:Name="DeleteSelectedImageButton" Click="DeleteSelectedImageButton_Click" Content="Delete Selected Image" HorizontalAlignment="Left" Margin="567,488,0,0" Height="26" VerticalAlignment="Top" Width="145"/>
这样我就可以从BitmapImage
Listview
了
private void DeleteSelectedImageButton_Click(object sender, RoutedEventArgs e)
{
CollectionOfCapturedImages.Remove((BitmapImage)ListView.SelectedItem);
}
但是当我从Label
删除图片时,我的Listview
内容未获得更新。我怎样才能正确更新我的Label
内容?
答案 0 :(得分:0)
您必须将其从CollectionOfCapturedImages
移除并绑定MwAmountOfImagesLabel => CollectionOfCapturedImages.Count
答案 1 :(得分:0)
摆脱这段代码:
cameraWindow.amountOfCapturedImages += (int count) => {
MwAmountOfImagesLabel.Content = count;
};
...只需绑定Content
的{{1}} Label
属性的Count
属性:
ObservableCollection
您应该不以编程方式在代码中的某处设置<Label Content="{Binding CollectionOfCapturedImages.Count}" />
Content
属性。只需在XAML标记中设置绑定即可。