在Silverlight中设计/呈现ComboBoxItem的最简单方法?

在Silverlight中设计/呈现ComboBoxItem的最简单方法?,silverlight,combobox,Silverlight,Combobox,定制ComboBoxItem内容显示的最简单方法是什么?我想提供一个字体名称列表,每个项目都用适当的字体绘制。 我想我需要像这样的东西 <TextBlock FontFamily="{TemplateBinding Content}" Text="{TemplateBinding Content}" /> 那会去哪里? 我是否可以为ComboBoxItem创建一个控件模板,并将其仅用于选定的ComboxBox? 感谢您的提示。Silverlight 3没有隐式样式,因此,如果您使用

定制ComboBoxItem内容显示的最简单方法是什么?我想提供一个字体名称列表,每个项目都用适当的字体绘制。 我想我需要像这样的东西

<TextBlock FontFamily="{TemplateBinding Content}" Text="{TemplateBinding Content}" />
那会去哪里? 我是否可以为ComboBoxItem创建一个控件模板,并将其仅用于选定的ComboxBox?
感谢您的提示。

Silverlight 3没有隐式样式,因此,如果您使用ControlTemplate创建样式来完成此任务,则必须将其显式指定给ComboBox。不用担心它会被意外捡到

我能够通过组合框中绑定到ObservableCollection的以下XAML实现这一点:

显然,如果要绑定到更复杂的对象,那么绑定可能需要一个属性名,但这使我能够以自己的字体查看各种选择


如果您发现自己正在重用它,您还可以将其重构为DataTemplate或样式。

Silverlight 3没有隐式样式,因此如果您使用ControlTemplate创建样式来完成此任务,则必须将其显式分配给ComboBox。不用担心它会被意外捡到

我能够通过组合框中绑定到ObservableCollection的以下XAML实现这一点:

显然,如果要绑定到更复杂的对象,那么绑定可能需要一个属性名,但这使我能够以自己的字体查看各种选择


如果您发现自己在重复使用它,您也可以将其重构为数据模板或样式。

回答得好,我打算建议项目源是FontFamily的集合,但这同样有效。让我想知道当指定给FontFamily属性时,字符串如何转换为FontFamily,除非默认绑定隐式处理该属性,否则我看不到在哪里转换。但是,找不到文档记录的位置。必须有一个隐式绑定转换器来处理它。考虑到您可以在XAML中将其指定为字符串,并让其正确查找正确的字体,它可能是通过相同的机制运行的。谢谢,看起来正是我所寻找的。回答很好,我打算建议项目源是FontFamily的集合,但这同样有效。让我想知道当指定给FontFamily属性时,字符串如何转换为FontFamily,除非默认绑定隐式处理该属性,否则我看不到在哪里转换。但是,找不到文档记录的位置。必须有一个隐式绑定转换器来处理它。假设您可以在XAML中将它指定为字符串,并让它正确地查找正确的字体,那么它可能是通过相同的机制实现的。谢谢,看起来正是我想要的。
<ComboBox.ItemTemplate>
    <DataTemplate>
        <TextBlock FontFamily="{Binding}" Text="{Binding}"/>
    </DataTemplate>
</ComboBox.ItemTemplate>