-2

当我在 中声明 aTreeView时,我可以对立即添加到其中的元素XAML使用我选择的控件(此处为 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 回答