如何在C#XAML WPF中处理数据修改 问题
好了,嘿,伙计们,我的问题是目前正在考虑用WPF编辑我用c#编写的应用程序中存在的数据的最佳方法 该应用程序是一个小型的独立应用程序,它使用XML存储有关如何解释十六进制消息并以人类可读的格式显示的规则 目前,我的应用程序运行良好,但我手工制作了XML,我想在应用程序中编写一些东西,允许外行用户创建自己的规则集并将其保存到XML 现在,保存到XML和处理编辑后的数据,我相信我可以做到,但我被XML的最佳方法难住了 好的,为了简单起见,我只提供了一般信息,排除了一些东西——我正在使用的类: 规则集 以下是我们解释的规则示例: 对于背景信息,这是以十六进制格式在设备之间的银行应用程序中传递的持卡人验证方法规则,并按照此处所述进行解释 我有一个目录,它是存储在内存中的规则集列表,当应用程序最初加载时,它加载所有XML并将其解析为上面的对象,然后可以在应用程序中与这些对象交互,以提供有意义的信息 我正在努力实现的是我所能实现的最好的UI显示,我考虑了一个:如何在C#XAML WPF中处理数据修改 问题,c#,wpf,xaml,C#,Wpf,Xaml,好了,嘿,伙计们,我的问题是目前正在考虑用WPF编辑我用c#编写的应用程序中存在的数据的最佳方法 该应用程序是一个小型的独立应用程序,它使用XML存储有关如何解释十六进制消息并以人类可读的格式显示的规则 目前,我的应用程序运行良好,但我手工制作了XML,我想在应用程序中编写一些东西,允许外行用户创建自己的规则集并将其保存到XML 现在,保存到XML和处理编辑后的数据,我相信我可以做到,但我被XML的最佳方法难住了 好的,为了简单起见,我只提供了一般信息,排除了一些东西——我正在使用的类: 规则集
如果有人对列表中需要的内容有任何示例或教程链接,或者有更好的建议和示例,那就太好了。我几乎无法思考处理这些数据的最佳方式。我投票将这个问题作为离题题来结束,因为它属于描述这些内容的文档格式规则?一个表格,因为它很清楚,很容易搜索和解释。我认为表格可能也是编辑器的一个很好的起点(当然,它是交互式的,那么它会更好),但不要忘记,编辑器在编辑和搜索/扫描/读取规则方面都很有用……所以可能是DataGrid?我想我宁愿不这样做(但我不知道规则集的复杂性)没有真正的DataGrid组件的“沉重”的小网格。我可能喜欢单击单元格以迭代其可能的状态(nothing、x、0、1),并最终使用Excel样式复制(将单元格角拖动到右/左以将相同的值设置为多个单元格)。我想你不应该公开你正在使用的模型,它的字段看起来像一个实现细节,与我在表中看到的相差太远,如果没有编程知识的人必须使用这个编辑器,那么它应该是……不,我同意我的意图是当用户在主视图上交互时,在后台自动处理模型复杂性的生成。我不认为最终用户会理解为什么我有开始位和结束位或类似的东西,例如,它会被隐藏,我只是真正关心规则中有多少字节,如果是这样的话,每个字节都有一个表(这可能建议树视图,然后每个字节都有一个表,表上方的元数据可编辑)但问题是,如果没有另一层imo,一个表将无法覆盖所需的所有数据。
public class RuleSet
{
public string Name { get; set; }
public string LongName { get; set; }
public DateTime ReleaseDate { get; set; }
public string Base { get; set; }
public List<String> IncludedBulletins { get; set; }
public List<Byte> Bytes { get; set; }
public RuleSet(string name, string longName, string releaseDate, string @base)
{
ReleaseDate = parseDate(releaseDate);
Name = name;
LongName = longName;
Base = @base;
IncludedBulletins = new List<String>();
Bytes = new List<Byte>();
}
}
public class Byte
{
public int ID { get; private set; }
public ReadMode Mode { get; private set; }
public List<Rule> Rules { get; set; }
public enum ReadMode
{
ASSORTED,
MULTI,
SINGLE
};
public Byte()
{
Rules = new List<Rule>();
}
}
public class Rule
{
public bool Active { get; private set; }
public int BytePos { get; private set; }
public int NibblePos { get; private set; }
public int Bit { get; private set; }
public int EndBit { get; private set; }
public int Value { get; private set; }
public int EndValue { get; private set; }
public string Translation { get; private set; }
public bool AllLowerBits { get; private set; }
public Rule()
{
Active = false;
Translation = "RFU";
}
}