2016-11-21 11 views
1

リスト内のアイテムが選択されている場合、グリッド内のアイテムを更新したいという問題があります。バインディングは次のように行われます。プログラムでUWPバインディングを更新する

<ScrollViewer Grid.Row="1"> 
       <ItemsControl x:Name="RightGridItemsControl" ItemsSource="{Binding News}" ItemTemplate="{StaticResource RightGridTemplate}"/> 
</ScrollViewer> 

Planetが選択された場合、ItemsSourceバインディングを新しいリストに更新したいと考えています。これは私のDataModelで指定されています。

これをプログラムで更新するにはどうすればよいですか?私はこれのようなものを試しましたが、それはDependencyObjectを必要とし、それが何を意味するかを見つけることができません。これは、UWPではなくWPFのようにも見えます。

`var myBinding = new Binding 
        { 
         Source = Planets, 
         Mode = BindingMode.OneWay, 
         UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged 
        }; 
        BindingOperations.SetBinding(new , ItemsControl.ItemsSourceProperty, myBinding);` 

'SetBinding'のコンストラクタの最初の項目は何ですか?

おかげ

+0

最初のパラメータは 'RightGridItemsControl'でなければならず、' Binding'クラスの 'Path'プロパティを設定するのを忘れないでください。 – tao

+0

'RightGridItemsControl'のビューモデルで参照を取得するにはどうすればよいですか? –

答えて

2

あなたはこのようにバインディングを設定することができます。

BindingOperations.SetBinding(
    RightGridItemsControl, ItemsControl.ItemsSourceProperty, myBinding); 

またはこのような:

RightGridItemsControl.SetBinding(ItemsControl.ItemsSourceProperty, myBinding); 

注意はまた、その現在お使いの結合の存在なしプロパティパスがありません。 XAMLのようにNewsプロパティがある場合、バインディングはMode = BindingMode.OneWay(既定値)ではなくUpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged(単方向バインディングには影響しません)を除いて、以下のようになります。

var myBinding = new Binding 
{ 
    Source = Planets, 
    Path = new PropertyPath("News") 
}; 
+0

'RightGridItemsControl'をどのように参照できますか?これはXAMLの文字列としてのみ設定されており、私はintellisenseを持っていません。 –

+0

私はviewmodelも使用していますが、コードの背後にはありません。 –

+0

'x:Name =" RightGridItemsControl "'は、XAMLのクラスにフィールドを作成します。 – Clemens

関連する問題