Wpf 如何将数据绑定到组合框并重写项模板?

Wpf 如何将数据绑定到组合框并重写项模板?,wpf,Wpf,我想制作一个组合框,让photoshop能够显示计算机中的所有字体并显示出来。 我应该显示字体名称,字体的样本,所以我必须重写项目的样式 我这样写代码: <ItemsControl Grid.Column="1" Margin="10,10,0,10"> <ItemsControl.ItemsPanel> <ItemsPanelTemplate>

我想制作一个组合框,让photoshop能够显示计算机中的所有字体并显示出来。

我应该显示字体名称,字体的样本,所以我必须重写项目的样式

我这样写代码:

<ItemsControl Grid.Column="1" Margin="10,10,0,10">
                        <ItemsControl.ItemsPanel>
                            <ItemsPanelTemplate>
                                <ComboBox></ComboBox>
                            </ItemsPanelTemplate>
                        </ItemsControl.ItemsPanel>
                    </ItemsControl>

但是visual studio报告了一个错误:


我如何解决它和自定义一个组合框我自己?谢谢。

一个简单的示例。根据业主的意见进行编辑

XAML


我发现如果可以将itemsource绑定到ItemsSource=“{x:Static m:Fonts.SystemFontFamilies},我可以得到字体列表。但现在的问题是如何在datatemplate中绑定它?@10245074然后需要更改两个
TextBlock
的绑定,并编写一个新的转换器以获得第一个姓氏表单
FontFamily.FamilyNames
<Window x:Class="WpfApp1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp1"
        xmlns:sys="clr-namespace:System;assembly=mscorlib"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <ComboBox Width="200" VerticalAlignment="Center"
              HorizontalContentAlignment="Stretch"
              ItemsSource="{x:Static Fonts.SystemFontFamilies}">
        <ComboBox.Resources>
            <local:GetFamilyName x:Key="getName"/>
        </ComboBox.Resources>
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <DockPanel>
                    <TextBlock Text="{Binding Converter={StaticResource getName}}"/>
                    <TextBlock Text="Sample" TextAlignment="Right"
                               FontFamily="{Binding}"/>
                </DockPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>
    </Grid>
</Window>
namespace WpfApp1
{
    public class GetName : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return (value as FontFamily)?.FamilyNames.Values.First();
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
}