0

DataBindingについての私の理解はまだ「それに取り組んでいる」レベルなので、ここに私の問題があります。私はこのデータを持っています:

private class User
    {
        public string username { get; set; }
        public string real_name { get; set; }
    }

ObservableCollection<User> users = new ObservableCollection<User>();
...adds stuff...
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(users);

これを2列のリストボックスに表示したいと思います。次のようにして、2列のComboBoxにアクセスしました。

<ComboBox Height="23" HorizontalAlignment="Left" Margin="114,23,0,0" Name="comboBox_client" VerticalAlignment="Top" Width="113" IsEditable="True" ItemsSource="{Binding}" >
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding username}" Name="left" Width="50" />
                    <TextBlock Text="{Binding real_name}" Name="right" Width="100" />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

comboBox_client.ItemsSource = view;

しかし、ItemTemplateが表示されないため、ListBoxにステップオーバーする方法がわかりません。また、上記のXamlが実際に行っていることの背後にある概念がわかりません。ItemTemplateの部分を取り出して、残りをListBoxで試してみると、System.Windows.DataTemplateでいっぱいのリストボックスだけになります。

正しい方向に向けてください。

4

2 に答える 2

3

ListBox にもItemTemplateプロパティがあります。あなたはそれを見逃したと思います。

に使用したものと同じものDataTemplateを使用できますComboBox

于 2012-05-24T11:24:10.020 に答える
1

リストボックス:

    <ListBox ItemsSource="{Binding}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding username}" Width="50" />
                    <TextBlock Text="{Binding real_name}" Width="100" />
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

しかし、私には、ListViewがこのタスクに適しているように思われます。

    <ListView ItemsSource="{Binding}">
        <ListView.View>
            <GridView>
                <GridViewColumn Header="User name" DisplayMemberBinding="{Binding username}" Width="50" />
                <GridViewColumn Header="Name" DisplayMemberBinding="{Binding RealName}" Width="100" />
            </GridView>
        </ListView.View>
    </ListView>
于 2012-05-24T11:28:42.670 に答える