0

これは次のComboBox ItemTemplateとおりです。

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

Texblock.TextTrimming上記で使いたいと思いますTextBlock。これTextBlockComboBoxItemat画面になるのですが、何をatにすればいいのかわかりません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;
    }
}

Xaml:

同上

結果:

ここに画像の説明を入力

于 2013-01-09T22:28:38.253 に答える