WPF - 从listview中删除所选项目(BitmapImage)

时间:2017-04-27 05:59:10

标签: wpf listview observablecollection

我有一个Listview并且为ItemsSource我设置了CollectionOfCapturedImagesObservableCollection),一个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内容?

2 个答案:

答案 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标记中设置绑定即可。

相关问题