2012-01-17 40 views
0

我有一個小的WPF應用程序,其中有一個文件列表。在文件列表下方,我有一個「上傳」按鈕。我希望上傳按鈕中的文本顯示「上傳x個文件」,其中x是列表中的項目數量。爲什麼我的轉換器(基於ListView.ItemsSource)不被調用?

我正在使用一個轉換器,它將ItemsSource屬性作爲輸入並返回字符串,但是如果我添加或從列表視圖中刪除項目(即它是基礎集合),則不會調用按鈕綁定上的轉換器。

我在做什麼不正確?

我有基類:

public class FileItem : INotifyPropertyChanged { ... } 

而且一個ObservableCollection:

public class Files : ObservableCollection<FileItem> {} 

的我收集分配到ListView。

lvw_FileList.ItemsSource = new Files(); 

ListView有它的ItemSource屬性綁定。

<ListView x:Name="lvw_FileList" ItemsSource="{Binding Mode=OneWay}"> 
... 
</ListView> 

文本內容需要按鈕的按鈕基於ListView.ItemsSource。

<Button Content="{Binding ElementName=lvw_FileList, Path=ItemsSource, Converter={StaticResource UpdateButtonConverter}}" x:Name="btn_Upload" /> 
+0

「ListView.ItemsSource」的綁定沒用,你用代碼中的賦值覆蓋它。 –

+0

好的 - 已刪除。 – dan

回答

2

綁定只收聽PropertyChanged而不是CollectionChanged通知。如果您需要在收集更改時考慮MultiBinding同時收集集合及其Count屬性,則需要運行轉換。計數變化將觸發重新評估,並且可以在轉換器中使用收集值。

+0

輝煌。謝謝。這很有用。 – dan

+0

@dan:不客氣,很高興聽到:) –

相關問題