2

抱歉,如果这是一个基本问题,但我怎样才能将我拥有的 ListBox 的 ItemTemplate 放入窗口的资源中,以便多个 ListBox 可以使用它。

这是一些 XAML:

<Window x:Class="Example">
    <Window.Resources>
        <DataTemplate x:Key="dtExample">
            <ListBox.ItemTemplate>
            // styles go here...
            </ListBox.ItemTemplate>
        </DataTemplate>
    </Window.Resources>
    <ListBox ItemTemplate="{StaticResource dtExample}">
    // items go here...
    </ListBox>
</Window>

这会引发“附加属性没有设置器”设计时错误。为了简洁起见,我删除了我认为无关紧要的部分代码。

谢谢

4

6 回答 6

5

只需将您的 itemtemplate 添加到窗口的资源并添加一个键:

<Window.Resource>
 <DataTemplate x:Key="myTemplate">
  ....
 </DataTemplate>
</Window.Resources>

然后用这样的东西应用它:

<ListBox ItemTemplate="{StaticResource myTemplate}">
 ...
</ListBox>
于 2009-03-13T08:21:45.937 回答
2

您提供了以下代码:

 <DataTemplate x:Key="dtExample">
        <ListBox.ItemTemplate>
        // styles go here...
        </ListBox.ItemTemplate>
    </DataTemplate>

但这行不通。您不能<ListBox.ItemTemplate>直接在模板中提供。你在这里不需要这个。只需创建一个简单的数据模板,它应该可以工作。

于 2009-03-13T12:37:37.473 回答
1

我知道这篇文章太老了,对作者来说太有趣了,但我可能对那些有同样问题的人感兴趣,然后用谷歌搜索一下。我可能会看到问题是您应该在 ListBox 中使用 ListBox.ItemTemplate。例如,<ListBox ...><ListBox.ItemTemplate> ... </ListBox.ItemTemplate></ListBox>

于 2010-06-30T10:41:04.703 回答
0

我认为问题在于您应该在资源中使用 x:Key 属性而不是 x:Name..

改变它,它会像一个魅力:)

于 2009-03-13T09:51:56.827 回答
0

您的 Window 类中有以下标签吗?

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
于 2009-03-13T10:06:17.557 回答
0

主题很旧,但这是解决方案:

<Window.Resources>
    <Style x:Key="ListBoxItem_Color" TargetType="{x:Type ListBoxItem}">
        <Setter Property="Template">
            *//style*
        </Setter>
    </Style>
</Window.resources>

<ListBox x:Name="MyListBox"
         ...
         ItemContainerStyle="{StaticResource ListBoxItem_Color}">
      <.../>
</ListBox>
于 2020-06-19T11:14:43.827 回答