-2

で a を宣言するTreeViewXAML、選択したコントロール (ここでは a StackPanel) をすぐに追加される要素に使用できます。

<Window x:Class="WpfApplication1.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:sys="clr-namespace:System;assembly=mscorlib"
    Title="MainWindow" Height="350" Width="525">
    <DockPanel Name="dockPanel1">
        <TreeView Name="treeView1">
            <TreeView.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal">
                        <ProgressBar Height="15" Width="160" />
                        <TextBlock Foreground="Red" Text="{Binding}"/>
                    </StackPanel>
                </DataTemplate>
            </TreeView.ItemTemplate>
            <sys:String>Foo</sys:String>
            <sys:String>Bar</sys:String>
        </TreeView>
    </DockPanel>
</Window>

C# コードから要素を追加するときに、どうすれば同じことを達成できますか?

namespace WpfApplication5
{
    public partial class MainWindow : Window
    {
        public MainWindow() {
            InitializeComponent();
            // I want something more complex than just "Quux".
            var item = new TreeViewItem { Header = "Quux" };
            treeView1.Items.Add(item);
        }
    }
}
4

2 に答える 2

1

XAML で TreeView を宣言すると、選択したコントロール (ここでは StackPanel) をすぐに追加される要素に使用できます。

これはすべてのアイテムに当てはまります。コードでは次のようにします。

treeView1.Items.Add("Text");

または

treeView1.ItemsSource = new[]
{
    "One", "Two"
};

UI 要素を追加しない限り、定義DataTemplateされたものが使用されます。

いくつかの参考文献を読みたいと思うかもしれません...

于 2013-08-22T19:13:04.927 に答える
0

早くやれよ :) 。

namespace WpfApplication5
{
    public partial class MainWindow : Window
    {
        public MainWindow() {
            InitializeComponent();

            var stackPanel = new StackPanel { Orientation = Orientation.Horizontal };
            stackPanel.Children.Add(new ProgressBar { Height = 15, Width = 160 });
            stackPanel.Children.Add(new TextBlock { Foreground = new SolidColorBrush(Colors.Red), Text = "Quux" });

            var item = new TreeViewItem { Header = stackPanel };
            treeView1.Items.Add(item);
        }
    }
}
于 2013-08-22T19:04:53.340 に答える