Как использовать DynamicResource с TreeView, чтобы у меня было 2 TreeView с использованием одного и того же ключа - PullRequest
1 голос
/ 08 февраля 2011

Я сделал это с помощью представления списка, так как могу определить ресурс:

<UserControl.Resources>
    <GridView x:Key="MyGrid" x:Shared="False">
        <!-- Defines what's in the grid view -->
    </GridView>
</UserControl.Resources>

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

<ListView View="{DynamicResource MyGrid}" ItemsSource="{Binding Path=TodaysItems}"/>
<ListView View="{DynamicResource MyGrid}" ItemsSource="{Binding Path=TomorrowsItems}"/>

I 'Я пытаюсь сделать то же самое с TreeViews.Я определил свое древовидное представление:

<UserControl.Resources>
    <TreeView x:Key="MyTreeView" x:Shared="False">
        <!-- Defines what's in the Tree view -->
    </TreeView>
</UserControl.Resources>

Но я не могу найти то, что мне нужно сделать

<TreeView ???="{DynamicResource MyTreeView}" ItemsSource="{Binding Path=ClientData}"/>
<TreeView ???="{DynamicResource MyTreeView}" ItemsSource="{Binding Path=CustomerData}"/>

Могу ли я даже сделать это?

1 Ответ

1 голос
/ 08 февраля 2011

Вы не можете сделать это с TreeView.Причина, по которой вы можете сделать это с ListView, заключается в том, что у него есть свойство View, которое может быть установлено для разных представлений.Представление в этом случае не является отдельным элементом пользовательского интерфейса - это просто, скажем, «настройки» для ListView.Хотя TreeView - это элемент пользовательского интерфейса, такой же как ListView.

. Командный подход для повторного использования в XAML - это Styles.Вы можете определить стиль для вас TreeView, где вы можете определить общие свойства и затем применить его ко всем элементам, как вам нравится.

Вот пример того, как вы можете определить стиль:

<Style x:Key="MyTreeStyle"
       TargetType="{x:Type TreeView}">
    <Setter Property="Background"
            Value="Red"/>
    <!-- Other property setters go here -->
</Style>

А вот как вы это применяете:

<TreeView Style="{StaticResource MyTreeStyle}" ItemsSource="{Binding Path=ClientData}"/>
<TreeView Style="{StaticResource MyTreeStyle}" ItemsSource="{Binding Path=CustomerData}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...