我是WPF新手并且正在尝试将数据绑定到datagrid。我有一个绑定到Datagrid的项目列表。相同的数据网格也有很少的列(2列),其值不是从列表中获取的,而是需要绑定到这两个数据网格列的单个值。有人能帮我找到解决方案吗? 下面是xaml代码。
ItemList是绑定到DataGrid的项目列表。它具有绑定到datagrid列的“PropertyName”和“PropertyValue”。
<DataGrid x:Name="dtgridUpload" AutoGenerateColumns="False" ItemsSource="{Binding ItemList}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PropertyName}" IsReadOnly="True">
<DataGridTextColumn.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Name" />
</StackPanel>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Header="Value" Width="200" Binding="{Binding PropertyValue}" IsReadOnly="True"/>
<DataGridTextColumn Header="Unit" Binding="{Binding PropertyUnit}" IsReadOnly="True"/>
<DataGridTextColumn Header="Value1" Width="200" IsReadOnly="{Binding Path=IsReadOnly}" Binding="{Binding PropertyName1}"/>
<DataGridTextColumn Header="Unit1" Binding="{Binding PropertyUnit1}"/>
</DataGrid.Columns>
</DataGrid>
.cs代码
private List<DeviceData_VM> itemList;
public List<DeviceData_VM> ItemList
{
get { return itemList; }
set
{
itemList= value;
NotifyPropertyChanged("ItemList");
}
}
TextReader readStream = new StreamReader("output.xml");
ItemList= (List<DeviceData_VM>)serialiser.Deserialize(readStream);
但是“PropertyName1”和“PropertyValue1”是从其他变量中获得的。
void GetFileData()
{
string[] readText = File.ReadAllLines(@"D:\WriteLines.txt");
List<DeviceData_VM> tempeDataLst = new List<DeviceData_VM>();
for (var i = 0; i < readText.Length - 1; i++)
{
if (readText[i][0] == ';' || readText[i][0] == '/' || readText[i][0] == '@' || readText[i][0] == '#' || readText[i][0] != 'A')
continue;
var cols = readText[i].Split('\t');
DeviceData_VM fileData = new DeviceData_VM();
fileData.PmName = cols[1];
fileData.PmValue = cols[2];
fileData.PmUnit = cols[4];
tempeDataLst.Add(fileData);
TabInfo tabCompInfo = new TabInfo();
foreach (var tabItem in LstTabInfo)
{
foreach (var devItem in tabItem.LstPmData1)
{
if(devItem.PmName == fileData.PmName)
{
if(fileData != null){
tabCompInfo.RightData = fileData;
break;
}
}
}
}
}
}
所以我在“RightData”中有ProperName1和PropertyValue1。如何将这些绑定到datagrid列?提前谢谢。
答案 0 :(得分:0)
您是否尝试向DeviceData_VM模型添加要绑定的额外属性?
之后,将您的值添加到您希望的任何数据源的每个DeviceData_VM中。
将每个项目添加到ItemList中,您的绑定应该按预期工作。