在过去的几个月里,我一直在阅读有关 StackOverflow 的问题、答案和建议。我是 C#、.Net、WPF 和 MVVM 的初学者。我正在为朋友的酒店开发 PMS(物业管理系统)。
我经常被一些问题困住好几天。这么多要学!!
无论如何..这是一个很烦人的问题,我只是想我终于直接征求意见了......
我有一个带有一个冻结列的 DataGrid,其中包含一个便利设施(文本)列表。以下列的标题包含房间的名称(或者更确切地说,房间类型)。有些房间类型有空调,有些没有,有些有电视,有些没有……这个数据网格应该用复选框填充,以允许旅馆经理指示哪些房间类型拥有哪些设施。
我有一个类,我想将它用于 itemssource 的绑定 observable 集合。
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 值(传递列的索引和当前行的对象)。我也考虑过不自动生成任何东西,而只是手动添加列..但是我需要一个可以复制的模板列,它会使用类似 string.Format(AmenitiesCheckList[{0}], columnIndex 的东西设置绑定) ...
这些是我的想法..但我不知道如何真正让一个工作。这在我的脑海里都是一个巨大的混乱。误解,我认为我理解但显然没有理解的东西,我还没有学到的东西,......
如果有人清楚地了解我的需求,可以帮助我提供一些准确的建议或好的代码。我将非常感激!我以前从未寻求过帮助。指向体面的文档的指针,关于学习/阅读什么的提示,以便自己能够做到这一点.. 欢迎大家。但是我有点急于快速完成这个看起来很简单的小屏幕......所以代码会很棒!
对不起,很长的消息。
让我知道是否需要更多信息..?
(关于单击复选框时如何处理更改..我想这是另一个主题..但如果您有建议已经采用可能的解决方案,我将不胜感激..)