Привязка выбора TreeView к ViewModel

Таким образом, у меня есть TreeView, который выглядит примерно так:

<TreeView   Name="elementTreeView"
                        ItemsSource="{Binding Elements}" 
                        Width="Auto"
                        SelectedValuePath="Path" />

Мне также определили TextBlock следующим образом:

<TextBlock Text="{Binding ElementName=elementTreeView, Path=SelectedValue}" />

Мой ModelView является довольно основным и содержит точно, что Вы ожидали бы. То, что я ищу, является способом связать свойство в моем ViewModel к SelectedValue. Прямо сейчас текстовый блок отображает то, в чем я нуждаюсь. Там какой-либо простой способ состоит в том, чтобы связать это свойство?

7
задан LandonSchropp 7 June 2010 в 20:12
поделиться

3 ответа

Получается, что это результат неправильного следования паттерну MVVM. Решением было просто использовать один объект ViewModel. Внутри объекта ViewModel (тип которого - ElementViewModel) у меня было что-то вроде:

public ElementViewModel Element {
    get {
        return this;
    }
}

Тогда мое объявление TreeView выглядело примерно так:

<TreeView   Name="treeView" 
            ItemsSource="{Binding Elements}" 
            Width="Auto"
            SelectedValuePath="Element" />

После этого все, что мне нужно было сделать, это привязать к элементу в другом моем представлении.

4
ответ дан 7 December 2019 в 16:39
поделиться

Вы можете использовать BindingMode OneWayToSource для привязки свойства TreeView SelectedValue к вашей ViewModel. Затем привяжите свойство TextBlock's Text с помощью OneWay привязки к тому же свойству ViewModel.

0
ответ дан 7 December 2019 в 16:39
поделиться

Вы можете привязать TreeView к свойству вашей ViewModel напрямую:

Это приведет к привязке к свойству "SelectedItem" в VM.

<TreeView   Name="elementTreeView"
                    ItemsSource="{Binding Elements}" 
                    SelectedValue="{Binding SelectedItem, Mode=OneWayToSource}"
                    Width="Auto"
                    SelectedValuePath="Path" />
-1
ответ дан 7 December 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: