如何为特定数据类型的 ListBoxItems 应用样式设置器?

发布于 2024-12-06 05:53:13 字数 952 浏览 1 评论 0原文

我的 WPF ListBox 包含两种类型的对象:产品和品牌。

我希望我的产品可供选择。我希望我的品牌不可选择

这两种类型都有自己的 DataTemplate。

默认情况下,任何内容都可以被选择:

<ListBox ... >
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:Product}">
            ...
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:Brand}">
            ...
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

我可以使用 Setter 设置 Focusable,但是什么都不能选择

<ListBox ... >
    <ListBox.Resources>
        ...
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Focusable" Value="False" />
        </Style>
    </ListBox.Resources>
</ListBox>

我无法将 Setter 放入 DataTemplate 中。

我无法将数据类型放入样式中。

如何仅设置 Brand 类型的 ListBoxItems 的样式?

My WPF ListBox contains two types of object: Product and Brand.

I want my Products selectable. I want my Brands not selectable.

Each of the two types has its own DataTemplate.

By default, anything may be selected:

<ListBox ... >
    <ListBox.Resources>
        <DataTemplate DataType="{x:Type local:Product}">
            ...
        </DataTemplate>
        <DataTemplate DataType="{x:Type local:Brand}">
            ...
        </DataTemplate>
    </ListBox.Resources>
</ListBox>

I can set Focusable with a Setter, but then nothing may be selected:

<ListBox ... >
    <ListBox.Resources>
        ...
        <Style TargetType="{x:Type ListBoxItem}">
            <Setter Property="Focusable" Value="False" />
        </Style>
    </ListBox.Resources>
</ListBox>

I cannot put the Setter within the DataTemplate.

I cannot put a DataType onto the Style.

How do I style only the ListBoxItems of type Brand?

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

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

发布评论

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

评论(2

溺孤伤于心 2024-12-13 05:53:13

借助 StyleSelector 类,您可以根据 ItemContainerStyle 的数据类型附加样式。这里有一个非常好的例子: http://www .telerik.com/help/wpf/common-data-binding-style-selectors.html

Thanks to the StyleSelector class you can attach styles depending on type of data for the ItemContainerStyle. There is a really good example here : http://www.telerik.com/help/wpf/common-data-binding-style-selectors.html

傾城如夢未必闌珊 2024-12-13 05:53:13

您可以在 ListBoxItem 样式上使用数据触发器吗?如果是这样,请绑定到 DataContext(您的类)并使用值转换器来测试类型。如果您对此感兴趣,请设置 ListBoxItem 的样式,使其不会显示为选中状态。

我认为您不能在没有代码隐藏或自定义行为的情况下禁止选择选择器(列表框的父级)中的项目。

Can you use a data trigger on your ListBoxItem style? If so, bind to the DataContext (your class) and use a value converter to test the type. If it's the one you're interested in, style the ListBoxItem so that it cannot appear selected.

I don't think you can disallow selection of an item in a Selector (parent of ListBox) without codebehind or a custom Behavior.

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