[英]WPF Binding in Xaml
類似的問題為此引起了廣泛關注,我似乎無法弄清楚發生了什么。
我正在努力使我的ListView填充到總線上,這很短,它被綁定到ObservableCollection ...
碼:
<controls:MetroWindow
...blah...
Title="MainWindow" x:Name="Main" DataContext="{Binding ElementName=Main}"
<ListBox Grid.Row="0" x:Name="FileNames" HorizontalAlignment="Left" Height="221" Margin="10,62,0,0" VerticalAlignment="Top" Width="258"
SelectionChanged="FileNames_SelectionChanged" BorderThickness="2"
ItemsSource="{Binding Reports, UpdateSourceTrigger=PropertyChanged}">
<ListBox.ItemTemplate>
<DataTemplate>
<Label CacheMode="{Binding Path=FileName,UpdateSourceTrigger=PropertyChanged}"></Label>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
//Code Behind
public ObservableCollection<ReportsModel> Reports { get; set; }
Reports = setReports();
ReportsModel表示INotifyPropertyChanged
public sealed class ReportsModel : INotifyPropertyChanged
我可以介入並看到Reports填充得很好,並且每個報告上也填充了filename字段,但是ListBox中沒有任何顯示。
任何幫助將不勝感激。
ObservableCollection<ReportsModel>
名為Reports
的ObservableCollection<ReportsModel>
的引用不能具有簡單的getter / setter方法。 您需要在Main
類上實現INotifyPropertyChange
並更改Reports以發出這樣的屬性更改信號
private ObservableCollection<ReportsModel> _reports;
public ObservableCollection<ReportsModel> Reports
{
get { return _reports; }
set
{
_reports = value;
PropertyChanged("Reports");
}
}
ReportsModel表示INotifyPropertyChanged
所保存的數據與集合的屬性Reports
綁定更改通知無關。
您應該使用PropertyChanged
周圍的所有內容來增強代碼。 這意味着:
主要應實現INotifyPropertyChanged
例如,在“源”發生更改時通知UI
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Reports"));
}
在稍作更改的問題之后進行編輯:應該以以下方式獲取/報告報告的值,以避免出現問題:
private ObservableCollection<ReportsModel> _Reports;
public ObservableCollection<ReportsModel> Reports
{
get { return _Reports; }
set
{
_Reports = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Reports"));
}
}
}
我想Main
也必須實現INotifyPropertyChanged
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.