Набор инструментов Silverlight Аккордеон в TreeView - PullRequest
0 голосов
/ 03 мая 2009

Я пытаюсь получить элемент управления SL Tookit (март 2009 г.) Accordion для заполнения ItemTemplate элемента управления TreeView, но он не отображается должным образом (просто квадрат 1x1 пикселя).

Вот мой XAML:

<UserControl x:Class="SilverlightTest.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tk="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit"
    xmlns:tkw="clr-namespace:System.Windows;assembly=System.Windows.Controls.Toolkit"
    xmlns:lo="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Layout.Toolkit"
    Width="400" Height="300">
    <Grid x:Name="LayoutRoot" Background="White">
        <tk:TreeView Name="tv">
            <tk:TreeView.ItemTemplate>
                <DataTemplate>
                    <lo:Accordion Name="acc" SelectionMode="ZeroOrMore">
                        <lo:Accordion.HeaderTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Key}"/>
                            </DataTemplate>
                        </lo:Accordion.HeaderTemplate>
                        <lo:Accordion.ContentTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="Value: "/>
                                    <TextBlock Text="{Binding Value}"/>
                                </StackPanel>
                            </DataTemplate>
                        </lo:Accordion.ContentTemplate>
                    </lo:Accordion>
                </DataTemplate>    
            </tk:TreeView.ItemTemplate>
        </tk:TreeView>
    </Grid>
</UserControl>

И код позади:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;

namespace SilverlightTest
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            KeyValuePair<string, string>[] data = new KeyValuePair<string,string>[]
            {
                new KeyValuePair<string, string>("Item 1", "Apple"),
                new KeyValuePair<string, string>("Item 2", "Banana"),
                new KeyValuePair<string, string>("Item 3", "Grapefruit"),
                new KeyValuePair<string, string>("Item 4", "Kiwi")
            };

            tv.ItemsSource = data;
        }
    }
}

Что я могу сделать, чтобы заставить это делать то, что я хочу?

1 Ответ

1 голос
/ 19 декабря 2009

Вы должны закончить код, добавив

tv.UpdateLayout ();

Это должно сделать это.

/ Micke

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