C# 组合框样式以显示分级和说明WPF

C# 组合框样式以显示分级和说明WPF,c#,wpf,mvvm,styles,C#,Wpf,Mvvm,Styles,我对WPF中的样式设计不是很在行,所以我想我会在这里问一下,看看是否有人能帮忙 我有一个组合框,它绑定到具有评级和说明的视图模型,当我将鼠标悬停在某个项目上时,该项目会更改以显示该项目的评级和说明 不过,这很好用,因为有些描述非常大,没有文字包装,只是看起来很难看 我不知道这是否可能,但我所追求的是一边是评级列表,另一边是描述框,但我只希望描述框显示当前突出显示的一个 大概是这样的: 有谁能帮我做这件事,或者至少给我指出正确的开始方向 谢谢, Nathan您可以编辑数据模板的副本(互联网将告诉

我对WPF中的样式设计不是很在行,所以我想我会在这里问一下,看看是否有人能帮忙

我有一个组合框,它绑定到具有评级和说明的视图模型,当我将鼠标悬停在某个项目上时,该项目会更改以显示该项目的评级和说明

不过,这很好用,因为有些描述非常大,没有文字包装,只是看起来很难看

我不知道这是否可能,但我所追求的是一边是评级列表,另一边是描述框,但我只希望描述框显示当前突出显示的一个

大概是这样的:

有谁能帮我做这件事,或者至少给我指出正确的开始方向

谢谢,
Nathan

您可以编辑数据模板的副本(互联网将告诉您如何使用Blend轻松完成此操作)。在该数据模板中,在右侧添加一个区域

它可以是另一个面板,您可以将网格向右扩展,或者添加水平延长线…不管您想怎么做

然后,您可以向右侧添加的任何内容添加两个绑定。一个绑定将用于要显示的描述(将其绑定到某个文本框)。第二个问题是新面板的可见性。当描述太长时,将其设置为折叠


我会更具描述性,但我猜这就是您真正需要的。

您不想为此使用工具提示的原因是什么

编辑

我刚意识到你真正想要的是什么。您需要某种方式来显示组合框的列表中当前所选项目的属性

您不能使用组合框这样做,因为当用户在下拉列表中导航时,它公开的
SelectedItem
属性不会更改,只有在用户进行选择时才会更改

但是,如果您编辑组合框的控件模板(这里Blend很有用),您将可以访问下拉列表的
项控件本身(我忘记了是什么类型的
项控件,我已经有一段时间没有查看该模板了)。您将能够访问它的
SelectedItem
属性

实际上,基于
组合框
构建一个
用户控件
,向其添加一个
CurrentItem
依赖项属性,并将其绑定到
ItemsControl
SelectedItem
属性可能是值得的。执行此操作后,您将拥有一个与普通的组合框类似的组合框
,只是它公开了一个可以绑定另一个控件的属性


另外,我实际上还没有做过这件事,所以我不知道你在尝试时会遇到什么样的问题。

使用数据模板完全重新定义行:

    <DataTemplate x:Key="superRow" >
        <StackPanel Orientation="Horizontal">
            <StackPanel.Resources>
                <Style TargetType="{x:Type TextBlock}">
                    <Setter Property="Margin" Value="5,2,0,0"/>
                </Style>
            </StackPanel.Resources>
            <TextBlock Text="{Binding Path=Rating}"/>
            <TextBlock Text="{Binding Path=RatingDescription}"/>
        </StackPanel>
    </DataTemplate>

然后在组合框中:

 <ComboBox ItemTemplate="{StaticResource superRow}" />


(为了简单起见,缺少了其他必需的组合框选项)

我想你不能缩短描述?我真的不能,因为我正在处理条件评级,其中一些选项非常全面。主要是因为不是每个人都会使用鼠标来选择项目,如果他们打开盒子快速查看评级,我仍然会看到描述。