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