2009-11-19 3 views
0

Я использую TreeView внутри элемента управления Combobox (от here). У меня есть объект ViewModel, который является DataContext моего окна.Обновить свойство на модели просмотра без кода?

Что бы я хотел, чтобы произошел, когда выбранный элемент в дереве/комбобоксах изменился, я хочу, чтобы свойство на моем ViewModel обновлялось с выбранным элементом. В идеале я хотел бы сделать это полностью в xaml, но я не могу понять, как это сделать.

Элемент управления имеет свойство зависимостей «SelectedTreeViewItem», поэтому в основном я хочу привязать это свойство к свойству зависимости на моем объекте ViewModel, но я не знаю, что именно мне нужно сделать (Trigger? EventTrigger?). Связывание должно быть только одним способом, поскольку я просто хочу, чтобы свойство моей модели представления отображало то, что в данный момент выбрано в элементе управления; Мне не нужно менять выбранный элемент элемента управления из моей модели представления. Я все еще довольно новичок в WPF.

Вот код моего элемента управления, пытающийся связать свойство SelectedTreeViewItem с свойством в моей модели представления. Это не работает, свойство в моей модели просмотра всегда равно нулю.

<local:TreeViewCombo 
     x:Name="encounterCodeSelector" 
     ItemsSource="{Binding Path=EncounterCodes}" 
     ItemTemplate="{StaticResource EncounterCodesTemplate}"    
     Style="{StaticResource TreeViewInComboBox}" 
     SelectedTreeViewItem="{Binding Path=SelectedEncounterCode, Mode=OneWay}" 
     Canvas.Left="171" Canvas.Top="377" Width="456"> 
    </local:TreeViewCombo> 

Edit:

Изменение режима из "OneWay" до "OneWayToSource" работал.

ответ

0

Просто привяжите SelectedTreeViewItem к свойству ViewModel, используя BindingMode=OneWay. Стандартная привязка должна работать нормально.

+0

Что такое «стандартная привязка»? бирка? Я пробовал это, и vs.net жалуется, что либо я помещаю его в неправильное место, либо неправильно его использую. – Joe

0

Сработало изменение режима с «OneWay» на «OneWayToSource».

<local:TreeViewCombo 
     x:Name="encounterCodeSelector" 
     ItemsSource="{Binding Path=EncounterCodes}" 
     ItemTemplate="{StaticResource EncounterCodesTemplate}"    
     Style="{StaticResource TreeViewInComboBox}" 
     SelectedTreeViewItem="{Binding Path=SelectedEncounterCode, Mode=OneWayToSource}" 
     Canvas.Left="171" Canvas.Top="377" Width="456"> 
    </local:TreeViewCombo> 
Смежные вопросы