此问题在此处已有答案:
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; }
}
1条答案
按热度按时间xqk2d5yq1#
让我们仅重置需要重置的内容: