如何在WPF中为每个组合框项使用多种字体?

时间:2018-04-22 07:59:17

标签: c# wpf vb.net

我想在这样的组合框中显示项目。

As shown in this image per item.

有可能吗? 你可以用c#或vb(对于WPF)来回答我

1 个答案:

答案 0 :(得分:1)

您可以使用comboBox中的项目模板进行数据绑定,轻松实现此目的:

首先,您需要为ComboBox创建项目模板,这可以通过多种方式完成,我将使用最简单的方法:

@Echo Off
WMIC DiskDrive Where SerialNumber="sn999" List Instance 2>Nul|Find "I">Nul && GoTo :Label1
Echo Drive Not Found & Pause
GoTo :EOF

:Label1
Echo Drive Found & Pause
GoTo :EOF

然后我将为ComboBox项创建视图Model并为主窗口分配DataContext以使绑定正常工作

项目视图型号:

<ComboBox Width="200" Height="35" VerticalContentAlignment="Center" ItemsSource="{Binding Items}">
        <ComboBox.ItemTemplate>
            <DataTemplate DataType="{x:Type local:ItemViewModel}">
                <StackPanel Orientation="Horizontal">
                    <StackPanel.Resources>
                        <Style TargetType="TextBlock">
                            <Setter Property="FontSize" Value="12"></Setter>
                            <Setter Property="VerticalAlignment" Value="Center"></Setter>
                        </Style>
                    </StackPanel.Resources>
                    <TextBlock Text="{Binding HintText}"></TextBlock>
                    <TextBlock>
                        <Run>( </Run>
                        <Run FontFamily="{Binding HintFontFamily}" Text="{Binding HintText}"></Run>
                        <Run> )</Run>
                    </TextBlock>
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

主窗口(或您的视图)代码:

public class ItemViewModel
{
    public string Name { get; set; }
    public string HintText { get; set; }
    public string HintFontFamily { get; set; }
}

最后得到的结果: Final result