私はListView
に別のDataTemplate
がバインドされています。私はバインディング表現でUpdateSource()
を呼び出すと、いくつかの列(テキストブロックとプログレスバーの組み合わせ)を更新したいと思います。私はまた、それがバインドされているプロパティが変更されたときに、列の1つを更新したい。WPF ListView UpdateSourceTriggerをバインドして明示的に奇妙な動作に設定しました
私はPropertyChanged
の動作を動作させることができました。しかし、私が他の列のプロパティを変更するたびに、UpdateSource
コールではなく、まっすぐに更新されます。 xamlに設定されているデフォルトの動作を使用しているUpdateSourceTrigger
を無視しているようです。
私はINotifyPropertyChanged
インターフェイスを実装するクラスを持っています。
私は明示的に更新したい列のXAMLは、次のようになります。
<GridViewColumn Width="300" Header="Percentage" DisplayMemberBinding="{Binding Percentage, UpdateSourceTrigger=Explicit}" />
そして、私はプロパティ変更で更新したいもののためのXAML:
<GridViewColumn Header="Status" Width="150" DisplayMemberBinding="{Binding Status, UpdateSourceTrigger=PropertyChanged}" />
私のバインディングが設定されていますもともとのように:
Binding downloadBinding = new Binding();
downloadBinding.Source = _downloads;
ListDownloads.SetBinding(ListView.ItemsSourceProperty, downloadBinding);
次のコードを実行すると:
_downloads[0].Percentage += 0.3;
_downloads[0].FileSize = 700.00;
_downloads[1].Percentage += 10;
列のパーセンテージの列はすぐに更新されますが、UpdateSource()の呼び出しを待つことが期待されます。
ソースを更新するための私のコードは次のとおりです。
BindingExpression be = ListDownloads.GetBindingExpression(ListView.ItemsSourceProperty);
be.UpdateSource();
私は何かが足りないのですか?私は何がオンラインであるか、なぜこれが起こっているかについての本で見つけることができません。
乾杯
ので、リストビューを更新する唯一の方法は、再バインドまたはそれらの線に沿って何かすることですでしょうか? –
オブジェクトがINotifyPropertyChangedを実装しているため、データが変更されたときにリストビューが更新されます。 –