簡體   English   中英

Xaml中的WPF綁定

[英]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>名為ReportsObservableCollection<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM