Как связать XML с TreeView без кода для (MVVM, dataContext из XAML) - PullRequest
1 голос
/ 14 декабря 2010

У меня есть окно с управлением представлением дерева внутри и XML-файл. Я хочу связать древовидное представление с файлом XML полностью из XAML, без какого-либо кода на C #.

Вот как я это делаю сейчас:

XAML

<Window.Resources>
    <HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="TreeViewItemData">
        <TreeViewItem Header="{Binding Path=Attribute[text].Value}" IsExpanded="True"/>
    </HierarchicalDataTemplate>
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="40" />
        <RowDefinition Height="370*" />
    </Grid.RowDefinitions>
    <TextBlock Text="RD Admin Tool" Grid.Row="0" FontSize="22" FontWeight="Bold" Padding="50,5"></TextBlock>
    <StackPanel Orientation="Horizontal" Grid.Row ="1">
        <Border BorderBrush="#FF7C7B7B" BorderThickness="1" Name="tBorder" Width="200" CornerRadius="5" Background="#FFF5F2F2">
            <TreeView Name="OptionsTree" 
                      ItemsSource="{Binding Path=Root.Elements}" 
                      ItemTemplate="{StaticResource TreeViewItemData}" 
                      HorizontalAlignment="Left" VerticalAlignment="Top" 
                      Margin="5,0,0,0" FontSize="18" Background="#FFF5F2F2">
            </TreeView>
        </Border>
        <Canvas Name="OptionContent" Width="445">
        </Canvas>
    </StackPanel>
</Grid>

Конструктор в коде позади :

 public MyWindow()
    {
        InitializeComponent();

        XDocument doc = XDocument.Parse(File.ReadAllText(@"C:\Tree.xml"));
        this.MyTreeView.DataContext = doc;
    }

Но я бы очень хотел написать это из XAML и не иметь никакого кода позади.

Есть предложения?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2010

Вы можете использовать XmlDataProvider в XAML для определения вашего внешнего XML как ресурса.Затем на него можно ссылаться и связывать с вашими различными элементами в XAML.

Обход можно найти здесь ... кроме того, в примере MSDN используется XmlDataProvider в сочетаниис TreeView здесь

1 голос
/ 14 декабря 2010

Вы можете использовать XmlDataProvider, чтобы указать источник данных xml и затем связать его с ним.

В этой статье обсуждается метод: http://msdn.microsoft.com/en-us/magazine/cc163299.aspx

...