0

这是一个ComboBox ItemTemplate

<DataTemplate x:Key="DataTemplate2">
    <Grid Background="AliceBlue" Height="30">
        <TextBlock Text="{Binding Content}" Foreground="Lime"></TextBlock>  
    </Grid>
</DataTemplate>

我想Texblock.TextTrimmingTextBlock上面使用。这TextBlock将是ComboBoxItemat 屏幕,但我不知道该放什么TextBlockText。我应该绑定什么?

我通常会看到他们放置的示例:Text={Binding CustomClass.CustomProperty},但我需要使其通用。所以它适用于每个ComboBox应用程序。

我可以在 Text 上放什么?

拜托,我正在尝试这个 4 小时。

4

1 回答 1

1

如果你希望它是通用的,只需使用{Binding}

例子:

 <Window x:Class="WpfApplication4.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="130" Width="167" Name="UI" >
    <Grid >
        <ComboBox ItemsSource="{Binding ElementName=UI, Path=Items}"  Height="23" HorizontalAlignment="Left" Margin="12,12,0,0" Name="comboBox1" VerticalAlignment="Top" Width="120" >
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <Grid Background="AliceBlue">
                        <TextBlock Text="{Binding}" Foreground="Lime"/>
                    </Grid>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>
    </Grid>
</Window>

代码:

public partial class MainWindow : Window
{
    public MainWindow() 
    {
        InitializeComponent();
        Items.Add("Stack");
        Items.Add("Overflow");
    }

    private ObservableCollection<string> _items = new ObservableCollection<string>();
    public ObservableCollection<string> Items
    {
        get { return _items; }
        set { _items = value; }
    }
}

结果:

在此处输入图像描述

如果您使用的是自定义对象,您可以覆盖该ToString方法,以便在组合框中显示您想要的内容

例子

public partial class MainWindow : Window 
{
    public MainWindow()
    {
        InitializeComponent();
        Items.Add(new CustomObject { Name = "Stack" });
        Items.Add(new CustomObject { Name = "Overflow" });
    }

    private ObservableCollection<CustomObject> _items = new ObservableCollection<CustomObject>();
    public ObservableCollection<CustomObject> Items
    {
        get { return _items; }
        set { _items = value; }
    }

}

public class CustomObject
{
    public string Name { get; set; }

    public override string ToString()
    {
        return Name;
    }
}

xml:

和上面一样

结果:

在此处输入图像描述

于 2013-01-09T22:28:38.253 回答