2016-11-21 3 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);` 

Что я должен поставить в качестве первого пункта для contstructor для 'SetBinding'?

Благодаря

+0

Первый параметр должен быть 'RightGridItemsControl' и не забудьте установить свойство' Path' в классе 'Binding'. – tao

+0

Как мне получить ссылку в моей модели просмотра 'RightGridItemsControl'? –

ответ

2

Вы можете установить Binding, как это:

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

или как это:

RightGridItemsControl.SetBinding(ItemsControl.ItemsSourceProperty, myBinding); 

Следует также отметить, что в настоящее время нет пути свойство присутствует в вашем Binding. Если есть свойство News, как в вашем XAML, привязка должна выглядеть, как показано ниже, без 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

Смежные вопросы