2012-01-17 7 views
0

私はファイルのリストを持っている小さなWPFアプリケーションを持っています。ファイルのリストの下に「アップロード」ボタンがあります。アップロードボタンのテキストに「Upload x files」と表示させてください。ここで、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

Ok - 削除しました。 – dan

答えて

2

バインディングは唯一PropertyChangedなくCollectionChanged通知に耳を傾けます。コレクションが変更されるたびに変換を実行する必要がある場合は、MultiBindingをコレクションとそのCountプロパティの両方に使用します。カウントの変更は再評価をトリガーし、コレクション値はコンバーターで使用できます。

+0

ブリリアント。ありがとう。それは治療に効果があった。 – dan

+0

@dan:それを聞いて嬉しいです。:) –

関連する問題