コレクションから DataGridComboBoxColumn にバインドする
-
19-09-2019 - |
質問
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;
}
}
}
しかし、私が本当に必要としているのはこれです データグリッドコンボボックス列 さんの。私の改訂内容は次のとおりです。
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#:
同じままです。
問題 これで、空のコンボボックス列が得られました。これを機能させる方法はありますか?
長期的には、双方向バインディングが必要です。名列をダブルクリックすると、コレクション内で考えられるすべての名のオプションを保持するコボボックスが表示されます。ジョージ、ジム、エイミー)。
ご協力をよろしくお願いいたします。
解決
WPF Toolkit Datagrid に関する最良のリファレンスの 1 つを紹介したいと思います。 サミュエル・モウラより 15 個のサンプルをダウンロードして手元に置きました。簡単な回答として提供するよりも、Datagrid の投稿シリーズの方が参考になると思われるため、リンクを貼っておきます。
他のヒント
DataGrid には Header
そして ItemsSource
設定されたプロパティ:
<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>
ツールキットのリリースの 1 つで、 DataGridComboBoxColumn.ItemsSource
: DataGridComboBoxColumn.ItemsSource が機能しない.
ただし、次善策が作成されました WPF DataGrid でのコンボ ボックスの使用. 。最後に、この記事をご覧ください。 DataGrid をもっと楽しく マーガレット・パーソンズ著も。
編集
さて、上記のコードが機能するかどうかはあまりわかりません。私は記憶に基づいてそれを行い、他のリンクをリソースとして参照しました。
この問題に対処していると思われるこの SO 投稿を見てください。 DataGridComboBoxColumn.ItemsSource のバインドの問題