WPF数据网格绑定错误

本文关键字:绑定 错误 网格 数据网 数据 WPF | 更新日期: 2023-09-27 17:58:29

我正在开发基于网络的应用程序,该应用程序使用C#与网络设备连接,前端在WPF上。问题是我想在运行特定命令后提取数据,提取后我想将其显示在DataGrid上。数据是根据我的需要使用regex正确提取的,但我想在DataGrid上显示的部分没有显示出来正在控制台上正确显示。代码为:

public class IPMAC
{
    public string ip { get; set; }
    public string mac { get; set; }
}
List<IPMAC> ipmac = new List<IPMAC>();
string pattern = @"(F8-F7-D3-00'S+)";
MatchCollection matches = Regex.Matches(stringData, pattern);
foreach (Match match in matches)
{
    Console.WriteLine("Hardware Address : {0}", match.Groups[1].Value);
    ipmac.Add(new IPMAC(){mac=match.Groups[1].Value});
}
string pattern2 = @"(192.168.1'S+)";
MatchCollection matchesIP = Regex.Matches(stringData, pattern2);
foreach (Match match in matchesIP)
{
    Console.WriteLine("IP Address : {0}", match.Groups[1].Value);
    ipmac.Add(new IPMAC() { ip = match.Groups[1].Value });

XAML是:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="250"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    <DataGrid Name="dg" Grid.Row="0" Height="250" AutoGenerateColumns="False" >     
        <DataGrid.Columns>
            <DataGridTextColumn Header="Mac Addresses" Binding="{Binding Path=mac}"/>
            <DataGridTextColumn Header="IP Addresses" Binding="{Binding Path=ip}"/>
        </DataGrid.Columns>
    </DataGrid>

简而言之,我不明白如何在数据网格上显示输出,就像它在控制台上显示一样。请帮忙??

WPF数据网格绑定错误

DataGrid中显示IPMAC列表的最简单方法是,在填充列表后从代码中设置ItemsSource

dg.ItemsSource = ipmac;

或者您可以通过以下步骤使用DataBinding

  • 正确设置DataContext。因为数据绑定从当前数据上下文解析绑定路径
  • ipmac声明为ObservableCollection类型的公共属性ObservableCollection内置了一种机制,每当向集合中添加或从集合中删除项时,都会通知UI刷新。数据绑定不能与成员/字段一起使用
  • ItemsSource绑定到ipmac属性

演示以上步骤的代码段:

//declare ipmac as public property
public ObservableCollection<IPMAC> ipmac { get; set; } 
//In constructor : initialize ipmac and set up DataContext
ipmac = new ObservableCollection<IPMAC>();
this.DataContext = this;
//In XAML : bind ItemsSource to ipmac
<DataGrid ItemSource="{Binding ipmac}" Name="dg" ... />