C# 如何显示datagrid中现有的xml文件内容,并且可以编辑和保存
我还在学习WPF、C#和xml文件。 我有一个包含现有内容的xml文件。 我想做的是:C# 如何显示datagrid中现有的xml文件内容,并且可以编辑和保存,c#,xml,wpf,datagrid,C#,Xml,Wpf,Datagrid,我还在学习WPF、C#和xml文件。 我有一个包含现有内容的xml文件。 我想做的是: 在datagrid中显示xml文件内容 当xml文件 显示在datagrid中,用户可以编辑内容 在用户编辑 内容,将新数据写入同一xml文件中 但我被困在第一步 我想展示这样的东西(仅示例,而非真实数据): 文件名=设备ID 文件位置=装备Opn 名称=银行标识代码 姓氏=bin描述 电话号码=垃圾箱质量 等等 但问题是,当我运行应用程序时,结果是这样的 以下是我曾经尝试过的: string samp
- 文件名=设备ID
- 文件位置=装备Opn
- 名称=银行标识代码
- 姓氏=bin描述
- 电话号码=垃圾箱质量
string sampleXMLFile = FilePath.XmlBinCode;
DataSet dataSet = new DataSet();
dataSet.ReadXml(sampleXMLFile);
DataView dataView = new DataView(dataSet.Tables[0]);
dataGrid_ConfigurableRejectBinCode.ItemsSource = dataView;
以下是我的xml文件的预览:
以下是我的XAML预览:
<DockPanel Background="White">
<Button Content="Load File" Click="LoadXmlFile_Click" DockPanel.Dock="Top"/>
<DataGrid x:Name="dataGrid_ConfigurableRejectBinCode"
DockPanel.Dock="Bottom"
CanUserAddRows="True"
CanUserDeleteRows="True"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserSortColumns="False">
<DataGrid.Columns>
<!--<DataGridTextColumn Header="Bin Code" Binding="{Binding BinCode}"/>
<DataGridTextColumn Header="Bin Description" Binding="{Binding Path=Element[BinDescription].Value}"/>
<DataGridTextColumn Header="Bin Quality" Binding="{Binding Path=Element[BinQuality].Value}"/>
<DataGridTextColumn Header="Pick" Binding="{Binding Path=Element[Pick].Value}"/>
<DataGridTextColumn Header="Vision Station" Binding="{Binding Path=Element[VisionStation].Value}"/>
<DataGridTextColumn Header="Vision IO" Binding="{Binding Path=Element[VisionIO].Value}"/>-->
</DataGrid.Columns>
</DataGrid>
</DockPanel>
如何像上面的图片一样显示xml数据,就像我想要的那样?请原谅我的语言,因为英语不是我的母语。
请帮帮我,谢谢我已经找到了展示它的方法,下面是我是如何做到的 生成类并绑定XAML控件中要显示的所有细节。 这是XAML
<Grid Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Eqpt ID"/>
<TextBlock Grid.Row="1" Grid.Column="0" Text="Equip Opn"/>
<TextBox Grid.Row="0" Grid.Column="1" IsReadOnly="True" Text="{Binding EqptID}"/>
<TextBox Grid.Row="1" Grid.Column="1" IsReadOnly="True" Text="{Binding EquipOpn}"/>
<DataGrid Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" x:Name="DataGrid_BinDefinition"
AutoGenerateColumns="False"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="False"
CanUserResizeColumns="False"
CanUserResizeRows="False"
CanUserSortColumns="False"
HorizontalContentAlignment="Center"
ItemsSource="{Binding BinDefinition}">
<DataGrid.Columns>
<DataGridTextColumn Header="Bin Code" Binding="{Binding BinCode}"/>
<DataGridTextColumn Header="Bin Description" Binding="{Binding BinDescription}"/>
<DataGridTextColumn Header="Bin Quality" Binding="{Binding BinQuality}"/>
<DataGridCheckBoxColumn Header="Pick" Binding="{Binding Pick}"/>
<mahApps:DataGridNumericUpDownColumn Header="Vision Station" Binding="{Binding VisionStation}" Maximum="3" Minimum="1"/>
<mahApps:DataGridNumericUpDownColumn Header="Vision IO" Binding="{Binding VisionIO}" Maximum="32" Minimum="1"/>
</DataGrid.Columns>
</DataGrid>
<Button Grid.Row="3" Grid.Column="0" x:Name="ButtonAddRow" Content="Add Row" Click="ButtonAddRow_Click"/>
<Button Grid.Row="3" Grid.Column="1" x:Name="ButtonDeleteRow" Content="Delete Row" Click="ButtonDeleteRow_Click"/>
<Button Grid.Row="4" Grid.Column="0" Grid.ColumnSpan="2" x:Name="ButtonSaveFile" Content="Save File" Click="ButtonSaveFile_Click"/>
</Grid>
然后是绑定控件的类
[Serializable]
public partial class XmlBinDefinitionModel : ViewModelBase
{
[XmlElement("EqptID")]
private string eqptID;
public string EqptID
{
get { return eqptID; }
set
{
if (eqptID != value)
{
eqptID = value;
RaisePropertyChanged(nameof(EqptID));
}
}
}
[XmlElement("EquipOpn")]
private string equipOpn;
public string EquipOpn
{
get { return equipOpn; }
set
{
if (equipOpn != value)
{
equipOpn = value;
RaisePropertyChanged(nameof(EquipOpn));
}
}
}
private List<BinDefinitionModel> binDefinition;
public List<BinDefinitionModel> BinDefinition
{
get { return binDefinition; }
set
{
if (binDefinition != value)
{
binDefinition = value;
RaisePropertyChanged(nameof(BinDefinition));
}
}
}
}//end public partial class XmlBinDefinitionModel
public partial class BinDefinitionModel : ViewModelBase
{
[XmlElement("BinCode")]
private string binCode;
public string BinCode
{
get { return binCode; }
set
{
if (binCode != value)
{
binCode = value;
RaisePropertyChanged(nameof(BinCode));
}
}
}
[XmlElement("BinDescription")]
private string binDescription;
public string BinDescription
{
get { return binDescription; }
set
{
if (binDescription != value)
{
binDescription = value;
RaisePropertyChanged(nameof(BinDescription));
}
}
}
[XmlElement("BinQuality")]
private string binQuality;
public string BinQuality
{
get { return binQuality; }
set
{
if (binQuality != value)
{
binQuality = value;
RaisePropertyChanged(nameof(BinQuality));
}
}
}
[XmlElement("Pick")]
private string pick;
public string Pick
{
get { return pick; }
set
{
if (pick != value)
{
pick = value;
RaisePropertyChanged(nameof(Pick));
}
}
}
[XmlElement("VisionStation")]
private string visionStation;
public string VisionStation
{
get { return visionStation; }
set
{
if (visionStation != value)
{
visionStation = value;
RaisePropertyChanged(nameof(VisionStation));
}
}
}
[XmlElement("VisionIO")]
private string visionIO;
public string VisionIO
{
get { return visionIO; }
set
{
if (visionIO != value)
{
visionIO = value;
RaisePropertyChanged(nameof(VisionIO));
}
}
}
}
[可序列化]
公共部分类XmlBindDefinitionModel:ViewModelBase
{
[XmlElement(“EqptID”)]
私有字符串eqptID;
公共字符串设备
{
获取{return eqptID;}
设置
{
如果(eqptID!=值)
{
eqptID=数值;
RaisePropertyChanged(设备名称(EqptID));
}
}
}
[XmlElement(“EquipOpn”)]
专用字符串设备;
公共字符串设备
{
获取{return equalopn;}
设置
{
if(equalopn!=值)
{
equipOpn=值;
RaisePropertyChanged(设备名称)(OPN));
}
}
}
私有列表绑定定义;
公共列表绑定定义
{
获取{return binDefinition;}
设置
{
if(binDefinition!=值)
{
binDefinition=值;
RaisePropertyChanged(名称(BinDefinition));
}
}
}
}//结束公共部分类XmlBindDefinitionModel
公共部分类BindDefinitionModel:ViewModelBase
{
[XmlElement(“BinCode”)]
私有字符串二进制码;
公共字符串二进制码
{
获取{return binCode;}
设置
{
if(binCode!=值)
{
binCode=值;
RaisePropertyChanged(名称(BinCode));
}
}
}
[XmlElement(“BindDescription”)]
私有字符串绑定描述;
公共字符串BindDescription
{
获取{return binDescription;}
设置
{
if(BindDescription!=值)
{
BindDescription=值;
RaisePropertyChanged(名称(BindDescription));
}
}
}
[XmlElement(“BinQuality”)]
私人品质;
公共字符串质量
{
获取{return binQuality;}
设置
{
if(binQuality!=值)
{
质量=价值;
RaisePropertyChanged(名称(BinQuality));
}
}
}
[XmlElement(“Pick”)]
私用线签;
公共字符串选取
{
获取{return pick;}
设置
{
如果(拾取!=值)
{
拾取=值;
RaisePropertyChanged(名称(拾取));
}
}
}
[XmlElement(“VisionStation”)]
私有字符串可视化安装;
公共字符串VisionStation
{
获取{return visionStation;}
设置
{
如果(visionStation!=值)
{
visionStation=值;
RaisePropertyChanged(名称(VisionStation));
}
}
}
[XmlElement(“VisionIO”)]
私有字符串visionIO;
公共字符串VisionIO
{
获取{return visionIO;}
设置
{
如果(visionIO!=值)
{
visionIO=价值;
RaisePropertyChanged(名称(VisionIO));
}
}
}
}
然后是代码隐藏
XmlDocument xmlDocument = new XmlDocument();
xmlDocument.Load(FilePath.XmlBinCode); //load the file
xmlBinDefinitionModel.EqptID = xmlDocument.DocumentElement.SelectSingleNode("EqptID").InnerText;
xmlBinDefinitionModel.EquipOpn = xmlDocument.DocumentElement.SelectSingleNode("EquipOpn").InnerText;
xmlBinDefinitionModel.BinDefinition = new List<BinDefinitionModel>();
XmlNodeList binCodeList = xmlDocument.GetElementsByTagName("BinCode");
XmlNodeList binDescriptionList = xmlDocument.GetElementsByTagName("BinDescription");
XmlNodeList binQualityList = xmlDocument.GetElementsByTagName("BinQuality");
XmlNodeList pickList = xmlDocument.GetElementsByTagName("Pick");
XmlNodeList visionStationList = xmlDocument.GetElementsByTagName("VisionStation");
XmlNodeList visionIOList = xmlDocument.GetElementsByTagName("VisionIO");
for (int i = 0; i < binCodeList.Count; i++)
{
xmlBinDefinitionModel.BinDefinition.Add(new BinDefinitionModel
{
BinCode = binCodeList[i].InnerText.Remove(0,2),
BinDescription = binDescriptionList[i].InnerText,
BinQuality = binQualityList[i].InnerText,
Pick = pickList[i].InnerText,
VisionStation = visionStationList[i].InnerText,
VisionIO = visionStationList[i].InnerText
});
}
XmlDocument XmlDocument=new XmlDocument();
Load(FilePath.XmlBinCode)//加载文件
xmlBinDefinitionModel.EqptID=xmlDocument.DocumentElement.SelectSingleNode(“EqptID”).InnerText;
xmlBinDefinitionModel.EquipOpn=xmlDocument.DocumentElement.SelectSingleNode(“EquipOpn”).InnerText;
xmlBinDefinitionModel.bindeinition=新列表();
XmlNodeList binCodeList=xmlDocument.GetElementsByTagName(“BinCode”);
XmlNodeList BindDescriptionList=xmlDocument.GetElementsByTagName(“BindDescription”);
XmlNodeList binQualityList=xmlDocument.GetElementsByTagName(“BinQuality”);
XmlNodeList pickList=xmlDocument.GetElementsByTagName(“Pick”);
XmlNodeList visionStationList=xmlDocument.GetElementsByTagName(“VisionStation”);
XmlNodeList visionIOList=xmlDocument.GetElementsByTagName(“VisionIO”);
for(int i=0;i