WPF Привязка элемента Treeview к UserControl - PullRequest
0 голосов
/ 05 мая 2011

У меня есть древовидное представление, использующее архитектуру Model View, у каждого TreeViewItem есть атрибут Windows Form. Когда я щелкаю по узлу, я хочу, чтобы приложение отображало форму, связанную с этим узлом, с правой стороны дерева.,

Как этого добиться с помощью привязки? Я пробовал следующее, но пользовательский элемент управления, связанный с ApplicationForms, не отображается.

   <ContentControl  Margin="163,5,127,5" Content="{Binding SelectedItem,ElementName=ApplicationTree}">
        <ContentControl.Resources>
            <DataTemplate DataType="{x:Type local:ApplicationViewModel}">
                <StackPanel>
                    <TextBlock Text="Displaying an A!" />

                    <ContentPresenter Name="MyContent">
                        <ContentPresenter.Content>
                            <UserControl x:Name="UserCntrl2" HorizontalAlignment="Stretch" Height="Auto" Width="Auto" Content="{Binding ApplicationForms}"/>
                        </ContentPresenter.Content>
                    </ContentPresenter>
                </StackPanel>
            </DataTemplate>

            <DataTemplate DataType="{x:Type local:ApplicationsViewModel}">
                <StackPanel>
                    <TextBlock Text="Displaying a B!" />
                    <!--<TextBlock Text="{Binding Bar}" />-->
                </StackPanel>
            </DataTemplate>
        </ContentControl.Resources>
    </ContentControl>

1 Ответ

0 голосов
/ 05 мая 2011

Поскольку вы используете MVVM, вы можете альтернативно использовать такую ​​логику в модели представления. затем вы можете привязать свойство IsSelected узла дерева к вашей модели представления, затем, когда IsSelected будет установлено в true с помощью wpf (когда пользователь выбирает элемент), вы можете делать все, что захотите.

Это очень полезный шаблон для использования моделей просмотра таким образом. Ваши view-модели могут иметь ссылки на все виды вещей и влиять на них в зависимости от выбора или расширения. Вы также можете пойти другим путем и заставить код воздействовать на модели представления и позволить привязке данных обновлять фактические элементы управления

Вот очень хорошая статья о MVVM и древовидной структуре

Вам также следует проверить HierarchicalDataTemplate , если вы работаете с древовидными представлениями

-edit-

После правильного прочтения вопроса я вижу, что вы уже поступаете правильно, то есть привязываете свой главный элемент управления к SelectedItem Treeview. Я верю, что свойство SelectedItem указывает на TreeViewItem, но не на виртуальную машину. Возможно в этом проблема?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...