2010-01-13 33 views
1

我不太擅长WPF中的样式,所以我想我会问这里,看看是否有人可以帮忙。组合框样式显示评分和描述WPF

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

这工作正常但是因为一些描述真的很大,没有包装它的文字看起来很丑。

我不知道这是否可能,但我后来的是一方的评级列表和另一方面的描述框,但我只希望描述框显示当前突出显示的一个。

事情是这样的:

alt text http://img94.imageshack.us/img94/6787/comboidea.png

谁能帮我这个或至少点我在正确的方向开始。

感谢, 弥敦道

+0

我猜你不能使描述更短? – John 2010-01-13 01:43:10

+0

我不能真正的因为我正在处理条件评分,他们中的一些人很满意。 – 2010-01-13 01:51:07

回答

0

您可以编辑数据模板(互联网将告诉你如何轻松地做到这一点与混合)的副本。在该数据模板中,向右侧添加一个区域。

它可以是另一个面板,您可以将网格扩展到右侧,或者添加水平扩展器...但是您想要这样做。

然后你可以添加两个绑定到任何你添加到右边。一个绑定将用于您想要显示的描述(将其绑定到某个文本框)。第二个将是新面板的可见性。设置它在描述太长时折叠它。

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

0

是否有一个原因,你不想使用工具提示呢?

编辑

我才意识到它是什么,你实际上需要的。您想要某种方式显示ComboBox's列表中当前所选项目的属性。

你不能这样做,因为它公开的SelectedItem属性在用户浏览下拉列表时不会改变,它只会在用户进行选择时才会改变。

但是,如果编辑ComboBox的控制模板(这里Blend是有用的),你将有机会到下拉列表的ItemsControl本身(我忘了是什么样的ItemsControl,我没有看过的模板在一段时间)。您将可以访问SelectedItem属性。

它实际上可能是值得的建设基础上,ComboBox,加入CurrentItem依赖属性给它,并结合UserControl即到ItemsControlSelectedItem财产。一旦你这样做,你有一个ComboBox,看起来就像一个普通的ComboBox,除了它暴露了一个CurrentItem属性,你可以绑定另一个控件。

P.S.我没有真正做过这件事,所以我不知道你尝试时会遇到什么样的问题。

+0

主要是因为不是每个人都会使用鼠标来选择该项目,而且如果他们只是打开方框以快速查看评分,我仍然会显示说明内容。 – 2010-01-13 23:25:11

0

使用一个DataTemplate彻底重新定义行:

<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}" /> 

(其他必要的组合框的选项错过了简单)