2016-11-21 106 views
1

我遇到了一個問題,如果在列表中選擇了一個項目,我希望它在我的網格中更新我的項目。該綁定通過以下方式完成:以編程方式更新UWP綁定

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

當物品行星被選中,我想更新ItemsSource綁定到一個新列表。這是在我的DataModel中指定的。

如何以編程方式更新?我試過這樣的事情,但它需要一個DependencyObject,並不能找出它的含義。這也看起來像WPF而不是UWP。

`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的viewmodel中獲得一個引用? –

回答

2

可以這樣設置綁定:

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

或像這樣:

RightGridItemsControl.SetBinding(ItemsControl.ItemsSourceProperty, myBinding); 

還要注意的是目前還存在於你的綁定沒有財產路徑。如果在您的XAML中有News屬性,那麼Binding應該如下所示,沒有Mode = BindingMode.OneWay(默認值),也沒有UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,這對單向綁定沒有影響。

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

如何引用'RightGridItemsControl'?它僅在XAML中設置爲字符串,並且我沒有任何智能感知。 –

+0

我也使用viewmodel,而不是背後的代碼。 –

+0

'x:Name =「RightGridItemsControl」'在XAML的類中創建一個字段。 – Clemens

相關問題