如何使用链接创建DataTemplate

时间:2010-07-21 18:17:07

标签: c# .net wpf xaml datatemplate

我正在尝试为PropertyCollection(PropertyDescriptors)创建DataTemplates,以此格式显示集合中的项目,

descriptor1>描述符2> descriptor3> descriptor4> descriptor5

每个描述符都是一个链接(使用超链接),我的问题是我可以使用标签(不是ItemsControl主机)吗?如果是的话,任何人都可以举例说明如何使用DataTemplates实现这一目标吗?

另外,无论如何都要从DataTemplate访问属性描述符?例如,假设我想使用属性描述符的当前实例作为CommandParameter。

感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用带有ItemsPanel的ListBox来执行此操作,这些ItemsPanel使用项目的水平布局(我只是绑定到我的示例中的字符串列表)。 HTH。

代码:

public List<string> Properties { get; set; }

XAML:

<ListBox ItemsSource="{Binding Properties}">
    <ListBox.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapPanel Width="{Binding (FrameworkElement.ActualWidth), RelativeSource={RelativeSource AncestorType=ScrollContentPresenter}}"
                            ItemWidth="{Binding (ListView.View).ItemWidth, RelativeSource={RelativeSource AncestorType=ListView}}"
                            MinWidth="{Binding ItemWidth, RelativeSource={RelativeSource Self}}"
                            ItemHeight="{Binding (ListView.View).ItemHeight, RelativeSource={RelativeSource AncestorType=ListView}}" />
        </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.ItemTemplate>
        <DataTemplate>
            <TextBlock>
                <Hyperlink NavigateUri="{Binding}">
                    <TextBlock Text="{Binding StringFormat={}{0} >}"/>
                </Hyperlink>
            </TextBlock>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

截图:

alt text http://i25.tinypic.com/28hq7h2.png