2016-08-25 21 views
1

リストボックスのリストボックスを、MVVMパターンのXAMLのリストボックスのプロパティ変数とItemSourceの間にバインドしました。リストボックスをバインドし、wpfでデータをリフレッシュ

XAML:

<ListBox Name="lbTemp" ItemsSource="{Binding SrcPermissionList}"/> 

のViewModel:私は、動的な方法でチェックボックスを追加しようとしましたので

public List<CheckBox> SrcPermissionList= new List<CheckBox>(); 
CheckBox ckbox = new CheckBox(); 
SrcPermissionList.Add(ckbox); 

そして、それはSTAスレッドへのアクセスの問題を引き起こしました。データはService + Serverによって取得されます。だから私はそれを修正するためにDispatchコードを使いました。

Application.Current.Dispatcher.Invoke(new Action(delegate ... 

結局のところ、動作しないようですが、デバッグしたときに実際にデータがあります。リストボックスをクリックする、またはスクロールするなどの操作を行う前に、以下のように何も描画しません。リストボックスに触れずにバインドされたリストボックスをリフレッシュする方法

Image of listbox which is not working

I donno。 少なくともデータは1回だけクリックするか、1回だけスクロールするだけです。 スレッド間に問題があると思います。 UIスレッドは、アイテムソースがいつ来るかを知らない。 私は何が間違っていますか?

+0

別のスレッドから(または、必要ならばUIスレッドに呼び出す)、タッチしないでください。コードビハインドの代わりにバインディングを使用します。 –

答えて

2

あなたはObservableCollection

のObservableCollectionを使用する必要がありますが、コレクション外のコードは、コレクションへの変更は、(削除、移動、追加)が発生する場合に注意することができるコレクションです。

private ObservableCollection<Type> collection; 
関連する問題