4

WPF でコレクションにバインドしようとすると、次のように動作するようになりました。

XAML:

<toolkit:DataGrid Name="dgPeoples"/>

CS:

namespace DataGrid
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1
    {
        private readonly ObservableCollection<Person> personList = new ObservableCollection<Person>();

        public Window1()
        {
            InitializeComponent();

            personList.Add(new Person("George", "Jung"));
            personList.Add(new Person("Jim", "Jefferson"));
            personList.Add(new Person("Amy", "Smith"));

            dgPeoples.ItemsSource = personList;
        }
    }
}

おそらく不必要ですが、ここに Person クラスがあります:

namespace DataGrid
{
    public class Person
    {
        public string fName { get; set; }
        public string lName { get; set; }

        public Person(string firstName, string lastName)
        {
            fName = firstName;
            lName = lastName;
        }
    }
}

しかし、私が本当に必要としているのは、 DataGridComboBoxColumnのこれです。ここに私のリビジョンがあります:

XAML:

<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
    <toolkit:DataGrid.Columns>
        <toolkit:DataGridComboBoxColumn Width="5*"/>
        <toolkit:DataGridComboBoxColumn Width="5*"/>
    </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

C#:

同じままです。

問題は、空のコンボボックス列が得られることです! これを機能させる方法はありますか?

長期的には、firstname 列をダブルクリックすると、コレクション内のすべての可能な名のオプション (つまり、George、Jim、Amy) を保持するコモボ ボックスが表示される 2 方向バインディングが必要です。

よろしくお願いします。

4

1 に答える 1

1

DataGrid にはHeaderItemsSourceプロパティ セットが必要です。

<toolkit:DataGrid Name="dgPeoples" Grid.Row="0" AutoGenerateColumns="False">
    <toolkit:DataGrid.Columns>
        <toolkit:DataGridComboBoxColumn Width="5*"
            Header="First Name"
            ItemsSource="{Binding Path=fName}"/>
        <toolkit:DataGridComboBoxColumn Width="5*"
            Header="First Name"
            ItemsSource="{Binding Path=lName}"/>
    </toolkit:DataGrid.Columns>
</toolkit:DataGrid>

DataGridComboBoxColumn.ItemsSourceDataGridComboBoxColumn.ItemsSourceを使用すると、ツールキットのリリースの 1 つに問題があったようです。

ただし、 WPF DataGrid でコンボ ボックスを使用するための回避策が作成されました。最後に、マーガレット・パーソンズによる「 DataGrid をもっと楽しく」という記事も参照してください。

編集
今、上記のコードが機能するかどうかはわかりません。私は記憶からそれを行い、他のリンクをリソースとして参照しました。

この問題に対処しているように見えるこの SO 投稿を見てください: DataGridComboBoxColumn.ItemsSource のバインディングの問題

于 2010-02-08T23:49:08.987 に答える