如何将 wpf ListBox 的 ItemTemplate 嵌入到 Window 资源中?

发布于 2024-07-15 04:28:40 字数 608 浏览 11 评论 0原文

抱歉,如果这是一个基本问题,但是我如何获取 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>

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

谢谢

Sorry if this is a basic question, but how can I take an ItemTemplate that I have for a ListBox, and put it in the resources for the window so that more than one ListBox can use it.

Here's some 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>

This is throwing a "Attached property has no setter" design-time error. I've removed portions of code that I didn't think would matter, for sake of brevity.

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

最好是你 2024-07-22 04:28:41

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

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

然后将其应用为如下所示:

<ListBox ItemTemplate="{StaticResource myTemplate}">
 ...
</ListBox>

just add your itemtemplate to your window's resource and add a key:

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

and then apply it with something like this:

<ListBox ItemTemplate="{StaticResource myTemplate}">
 ...
</ListBox>
枕头说它不想醒 2024-07-22 04:28:41

您提供了以下代码:

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

但这不起作用。 您不能直接在模板中提供。 你在这里不需要这个。 只需创建一个简单的数据模板,它就应该可以工作。

you provided the following code:

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

but this will not work. you cannot provide <ListBox.ItemTemplate> directly within your template. you don't need this here. just create a simple datatemplate and it should work.

浅听莫相离 2024-07-22 04:28:41

我知道这篇文章太旧了,作者不会感兴趣,但对于那些有同样问题并用谷歌搜索的人来说,我可能会感兴趣。 正如我所看到的问题是你应该在 ListBox 中使用 ListBox.ItemTemplate 。 例如,...

I know that the post is too old to be interesting for the author, yet i may be interesting for those who have the same problem and google it. As I may see the problem is you should use ListBox.ItemTemplate inside ListBox. For instance, <ListBox ...><ListBox.ItemTemplate> ... </ListBox.ItemTemplate></ListBox>

笑忘罢 2024-07-22 04:28:41

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

更改它,它将像魅力一样工作:)

I think the problem is that you should x:Key properties in your resources instead of the x:Name..

Change that, and it will work like a charm :)

可是我不能没有你 2024-07-22 04:28:41

您的 Window 类中是否有以下标记?

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Do you have the following tags in your Window class?

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
下雨或天晴 2024-07-22 04:28:41

这个主题很旧,但解决方案如下:

<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>

the subject is old but here is the solution:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文