ここ数か月、StackOverflow に関する質問、回答、アドバイスを読んでいます。私は C#、.Net、WPF、および MVVM の初心者です。友人のホテルの PMS (プロパティ マネジメント システム) を開発しています。
いくつかの問題で何日も立ち往生していることがよくあります。学ぶことがたくさん!!
とにかく..これは非常に厄介な問題です。最終的に直接アドバイスを求めたと思いました...
アメニティ (テキスト) のリストを保持する 1 つの固定された列を持つ DataGrid があります。次の列のヘッダーには、部屋の名前 (または部屋の種類) が含まれています。一部の部屋タイプにはエアコンがあり、他のタイプにはエアコンがなく、一部にはテレビがあり、一部にはありません。
itemssource のバインドされた観察可能なコレクションに使用したいクラスがあります。
public class RoomTypesAmenityItem
{
public string AmenityName { get; set; }
public IList<RoomTypeItem> RoomTypeList { get; set; }
public IList<bool> AmenitiesCheckList { get; set; }
public RoomTypesAmenityItem(string name, IList<RoomTypeItem> list, IList<bool> checklist)
{
AmenityName = name;
RoomTypeList = list;
AmenitiesCheckList = checklist;
}
}
ブール値を含むリストは、チェックボックスの IsChecked 値を設定するために使用されます。RoomTypeItem オブジェクトのリストは、どのオブジェクトのチェックボックスがチェックされているかチェックされていないかをより速く/より簡単に識別するのに役立つはずです。(たぶん使うと思うので、もう置いておきますが…)
さて、どう進めばいいのかわからない。凍結された列を XAML に手動で追加することを考えていました。次に、IMultiValueConverter で IsChecked 値を設定する datatemplate などを使用して、他の列を自動生成します (列のインデックスと現在の行のオブジェクトを渡します)。また、何も自動生成せず、単に手動で列を追加することも考えました..しかし、コピーできるテンプレート列が必要で、string.Format(AmenitiesCheckList[{0}], columnIndex のようなものを使用してバインディングを設定します) ...
これらは私が持っているアイデアです..しかし、実際に機能させる方法がわかりません。それはすべて私の心の中で大きな混乱です。誤解、理解したつもりが理解できていないこと、まだ学んでいないこと...
私の必要性を明確に理解している誰かが、正確なアドバイスや良いコードで私を助けてくれたら..私は非常に感謝しています! 私はこれまで助けを求めたことはありませんでした。まともなドキュメントへのポインタ、これを自分でできるようにするために何を学び、何を読むべきかについてのヒント..すべてを歓迎します。しかし、私はこのシンプルな小さな画面を急いで完成させたいと急いでいます.コードは素晴らしいでしょう!
長いメッセージで申し訳ありません。
さらに情報が必要な場合はお知らせください.. ?
(チェックボックスがクリックされたときの変更の処理方法について..それは別のトピックだと思います..しかし、可能な解決策をすでに提案していただければ幸いです..)