我有一个wpf项目,用于将xml绑定到datagrid,如下所示:
<DataGrid Name="dgCommunication" ItemsSource="{Binding CommunicationsView}" FontSize="14" CanUserResizeColumns="False" BorderThickness="5" AutoGenerateColumns="False" Margin="10,10,10,15" Background="White">
<DataGrid.Columns>
<DataGridTextColumn Header="ParamName" Binding="{Binding ParamName}" IsReadOnly="True"/>
<DataGridTextColumn Header="ParamValue" Binding="{Binding ParamValues, Mode=TwoWay}" />
<DataGridTextColumn Header="DefaultValue" Binding="{Binding DefaultValue}" IsReadOnly="True"/>
<DataGridTextColumn Header="MaxValue" Binding="{Binding MaxValue}" IsReadOnly="True"/>
<DataGridTextColumn Header="MinValue" Binding="{Binding MinValue}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
和xml文件:
<NewDataSet>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>BaudRate</ParamName>
<ParamValue>19200</ParamValue>
<DefaultValue>19200</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>Parity</ParamName>
<ParamValue>None</ParamValue>
<DefaultValue>None</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>StopBit</ParamName>
<ParamValue>1</ParamValue>
<DefaultValue>1</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>DataBit</ParamName>
<ParamValue>8</ParamValue>
<DefaultValue>8</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>SlaveAddress</ParamName>
<ParamValue>1</ParamValue>
<DefaultValue>1</DefaultValue>
<MaxValue>247</MaxValue>
<MinValue>1</MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>IP_Address</ParamName>
<ParamValue>192.168.0.1</ParamValue>
<DefaultValue>192.168.0.1</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>IP_Port</ParamName>
<ParamValue>502</ParamValue>
<DefaultValue>502</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
</NewDataSet>
这很好用。但现在我必须将部分DataGridTextColumn
更改为ComboBox
,以BaudRate
为例,我可以将xml更改为:
<NewDataSet>
<Communications>
<ModelNumber>0x01</ModelNumber>
<ParamName>BaudRate</ParamName>
<ParamValues>
<ParamValue>9600</ParamValue>
<ParamValue>19200</ParamValue>
<ParamValue>115200</ParamValue>
</ParamValues>
<DefaultValue>502</DefaultValue>
<MaxValue></MaxValue>
<MinValue></MinValue>
</Communications>
</NewDataSet>
我该如何做到这一点?提前感谢!
答案 0 :(得分:0)
如果您将ParamValues保存为列表并使用DataGridComboBoxColumn
通过使用MVVM-Model,XML-Docuemnt将成为数据库,您必须构建一个带有logik的模型,该模型将对对象进行buitl。 Viewmodel将使用Modeldata,如果我认为是正确的,你可以使用绑定到ParamValues。
<DataGridComboBoxColumn Header="Values" ItemsSource="{Binding ParamValues, Mode=TwoWay}" SelectedItemBinding="{Binding SelectedParamValue, Mode=TwoWay}"/>