C# 组合框样式以显示分级和说明WPF
我对WPF中的样式设计不是很在行,所以我想我会在这里问一下,看看是否有人能帮忙 我有一个组合框,它绑定到具有评级和说明的视图模型,当我将鼠标悬停在某个项目上时,该项目会更改以显示该项目的评级和说明 不过,这很好用,因为有些描述非常大,没有文字包装,只是看起来很难看 我不知道这是否可能,但我所追求的是一边是评级列表,另一边是描述框,但我只希望描述框显示当前突出显示的一个 大概是这样的: 有谁能帮我做这件事,或者至少给我指出正确的开始方向 谢谢,C# 组合框样式以显示分级和说明WPF,c#,wpf,mvvm,styles,C#,Wpf,Mvvm,Styles,我对WPF中的样式设计不是很在行,所以我想我会在这里问一下,看看是否有人能帮忙 我有一个组合框,它绑定到具有评级和说明的视图模型,当我将鼠标悬停在某个项目上时,该项目会更改以显示该项目的评级和说明 不过,这很好用,因为有些描述非常大,没有文字包装,只是看起来很难看 我不知道这是否可能,但我所追求的是一边是评级列表,另一边是描述框,但我只希望描述框显示当前突出显示的一个 大概是这样的: 有谁能帮我做这件事,或者至少给我指出正确的开始方向 谢谢, Nathan您可以编辑数据模板的副本(互联网将告诉
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}" />
(为了简单起见,缺少了其他必需的组合框选项)我想你不能缩短描述?我真的不能,因为我正在处理条件评级,其中一些选项非常全面。主要是因为不是每个人都会使用鼠标来选择项目,如果他们打开盒子快速查看评级,我仍然会看到描述。