专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Silverlight

关于WPF中TreeView控件的数据绑定有关问题

发布时间:2011-06-27 19:24:16 文章来源:www.iduyao.cn 采编人员:星星草
关于WPF中TreeView控件的数据绑定问题
我想在一个TreeView中显示一个包含Rectangle对象的链表,也就是只有一个层次。但是没有得到预期效果,TreeView中空空如也。以下是代码:

在Window.Resources中定义数据模板:

<Window.Resources>
    <HierarchicalDataTemplate DataType="{x:Type Rectangle}">
        <TextBlock Text="{Binding Path=ToolTip}"></TextBlock>
    </HierarchicalDataTemplate>
</Window.Resources>


窗口的内容:

<Grid>
    <TreeView Name="m_MyTreeControl"></TreeView>
</Grid>


这是窗口类的一个成员变量
ObservableCollection<Rectangle> m_rectangles = new ObservableCollection<Rectangle>();

在窗口类的构造函数中:
Rectangle rect1 = new Rectangle();
rect1.ToolTip = "矩形1";
Rectangle rect2 = new Rectangle();
rect1.ToolTip = "矩形2";
m_rectangles.Add(rect1);
m_rectangles.Add(rect2);
m_MyTreeControl.ItemsSource = m_rectangles;

可是最终TreeView中什么也没有。但是,如果我使用一个自定义类的话,TreeView就能够正确工作。请问高手问题出在哪里?难道不能用类型绑定方式运用到WPF类?
------解决思路----------------------
引用:
...
如果使用按类型选择的数据模板的话,TreeView碰到Category时,就会显示CategoryName,碰到Shape时就会显示ToolTip,这样是否可以实现呢?


可以是可以。但是,DataType不可以是UIElement的衍生类(我前一贴讲的Visual不准确)。
就是说你自己的Category可以,但WPF的Rectangle类,或Shape类不可以(它们都是UIElement)。

<Window ...
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <HierarchicalDataTemplate DataType="{x:Type sys:Int32}" >
            <TextBlock Text="{Binding}" ></TextBlock>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type sys:Decimal}" >
            <TextBlock Text="{Binding}" Background="Red" ></TextBlock>
        </HierarchicalDataTemplate>
        <HierarchicalDataTemplate DataType="{x:Type sys:String}" >
            <Button><TextBlock Text="{Binding}" /></Button>
        </HierarchicalDataTemplate>
    </Window.Resources>
    <Grid>
        <TreeView>
            <sys:Int32>1234</sys:Int32>
            <sys:Decimal>0.002</sys:Decimal>
            <sys:String>nihao</sys:String>
        </TreeView>
    </Grid>
</Window>
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: