wpf 如何重置源并保持绑定的可能性?[duplicate]

oipij1gg  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(160)

此问题在此处已有答案

using of INotifyPropertyChanged(3个答案)
昨天关门了。
在我的解决方案中,我使用了一个包含一些元素的集合的特定类。当我想绑定这个集合时,我通常使用这样的路径{Binding MyClass.InnerCollection}。在我尝试为该类设置另一个示例之前,它工作得很好,但它无法被绑定。

问题:如何重置源代码并保持绑定的可能性。有没有可能在不直接更改ItemsSource的情况下重置源代码而不丢失绑定?
XAML格式

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <ListView ItemsSource="{Binding Container.InnerCollection}"/>

    <StackPanel Grid.Column="1">
        <Button Content="Add new item" Click="AddNewItem"/>
        <Button Content="Reset source" Click="ResetSource"/>
    </StackPanel>
</Grid>

C语言#

public partial class MainWindow : Window, INotifyPropertyChanged
{

    public MainWindow()
    {
        Container = new MyClass() { InnerCollection = new ObservableCollection<string>() { "Start" } };

        this.DataContext = this;
        InitializeComponent();
    }
    public MyClass Container { get; set; }

    public void AddNewItem(object sender, RoutedEventArgs e)
    {
        Container.InnerCollection.Add($"AddedItem");
    }
    public void ResetSource(object sender, RoutedEventArgs e)
    {
        Container = new MyClass() { InnerCollection = new ObservableCollection<string>() { $"Reseted" } };
    }
}

public class MyClass
{
    public ObservableCollection<string> InnerCollection { get; set; }
}
xqk2d5yq

xqk2d5yq1#

让我们仅重置需要重置的内容:

public void ResetSource(object sender, RoutedEventArgs e)
{
    Container.InnerCollection = new ObservableCollection<string>() { $"Reseted" };
}

相关问题