在uwp中,当我更改c#代码中的数据时,它不会在前视图中更新



我正在uwp中实现列表视图。我将数据从集合对象绑定到列表视图。当我更改集合中的数据时,它不会更新。列表视图保持原样?请建议我如何更新数据?提前谢谢。

当我更改集合中的数据时,它不会更新。列表视图保持原样?

当您的属性值发生更改时,您需要通知绑定客户端。那么,如何通知呢?

您需要实现INotifyPropertyChanged接口并在属性更改时引发PropertyChanged事件。

我做了一个简单的代码示例供您参考:

<Grid>
<ListView ItemsSource="{Binding tests}">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"></TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Button Content="update" Click="Button_Click"></Button>
</Grid>
public sealed partial class MainPage : Page
{
public ObservableCollection<Test> tests { get; set; }
public MainPage()
{
this.InitializeComponent();
tests = new ObservableCollection<Test>();
for (int i=0;i<10;i++)
{
tests.Add(new Test() { Name="Name "+i});
}
this.DataContext = this;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
foreach (var t in tests)
{
t.Name = t.Name +" " +DateTime.Now;
}
}
}
public class Test:INotifyPropertyChanged
{
private string _Name;
public string Name
{
get { return _Name; }
set
{
if (_Name != value)
{
_Name = value;
RaisePropertyChanged("Name");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void RaisePropertyChanged(string PropertyName)
{
if (PropertyChanged!= null)
{
PropertyChanged(this,new PropertyChangedEventArgs(PropertyName));
}
}
}

最新更新