【问题标题】:How to Bind ComboboxItem Text to Combobox Text?如何将 ComboboxItem 文本绑定到 Combobox 文本?
【发布时间】:2013-01-09 21:56:54
【问题描述】:

这是ComboBoxItemTemplate

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

我想在上面的TextBlock 处使用Texblock.TextTrimming。这个TextBlock 将是屏幕上的ComboBoxItem,但我不知道在TextBlockText 上放什么。我应该绑定什么?

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

我可以在 Text 中添加什么内容?

拜托,我尝试了 4 个小时。

【问题讨论】:

    标签: c# .net wpf combobox itemtemplate


    【解决方案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;
        }
    }
    

    Xaml:

    同上

    结果:

    【讨论】:

    • 当我这样做时,它会在文本中显示类似于“System.Windows.Controls.Combobox”的内容。
    • 您要向组合框中添加什么类型的对象?
    • 用更好的例子更新答案
    猜你喜欢
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 2015-09-14
    相关资源
    最近更新 更多