将两个不同的类绑定到一个 Datagrid WPF

2024-05-05

我目前有 2 个包含不同类别的列表:List<Player> and List<Monster>.

I want to get these two lists in a single Datagrid as follows:enter image description here

我需要它们位于一个数据网格中的原因是我需要对主动性进行排序,并显示从高到低的顺序。数据网格还需要与任意数量的玩家/怪物一起工作。这些类如下所示:

public partial class Player
    {
        public bool IsInParty { get; set; }
        public string Name { get; set; }
        public int Ac { get; set; }
        public string ArmorType { get; set; }
        public string[] Speed { get; set; }
        public int InitiativeBonus { get; set; }
        public string[] DmgVul { get; set; }
        public string[] DmgRes { get; set; }
        public string[] DmgImm { get; set; }
        public string[] CondImm { get; set; }
        public string[] Senses { get; set; }
        public string[] Languages { get; set; }
        public NameValuePair[] Conditions { get; set; }
        public int Id { get; set; }


    }
public partial class Monster
    {
        public BaseMonster Stats { get; set; }
        public int Id { get; set; }
        public string Name { get; set; }
        public int Hp { get; set; }
        public List<int> Damage { get; set; }
        public bool IsOverhealed => Hp > Stats.MaxHp;
        public bool IsBloody => Hp <= Stats.MaxHp / 2.0;
        public bool IsNearDeath => Hp <= Stats.MaxHp / 4.0;
        public bool IsDead => Hp <= 0;
        public List<NameValuePair> Conditions { get; set; }
    }
public partial class BaseMonster
    {
        public int DefaultId { get; set; }
        public string DefaultName { get; set; }
        public string Type { get; set; }
        public string Alignment { get; set; }
        public int Ac { get; set; }
        public string ArmorType { get; set; }
        public int MaxHp { get; set; }
        public string HitDice { get; set; }
        public string[] Speed { get; set; }
        public int Str { get; set; }
        public int Dex { get; set; }
        public int Con { get; set; }
        public int Int { get; set; }
        public int Wis { get; set; }
        public int Cha { get; set; }
        public string[] SavThrProf { get; set; }
        public string[] SkillProf { get; set; }
        public string[] DmgVul { get; set; }
        public string[] DmgRes { get; set; }
        public string[] DmgImm { get; set; }
        public string[] CondImm { get; set; }
        public string[] Senses { get; set; }
        public string[] Languages { get; set; }
        public string Challenge { get; set; }
        public NameValuePair[] Traits { get; set; }
        public NameValuePair[] Actions { get; set; }
        public NameValuePair[] LegendaryActions { get; set; }
        public string LairActions { get; set; }
        public string RegionalEffects { get; set; }
    }

因为我对前端和xaml比较陌生,所以我在如何处理这个问题上遇到了一些麻烦。目前我已经通过一些测试数据成功获得以下内容:

<Grid Grid.Row="2" Grid.Column="1">
            <DataGrid x:Name="creatureDatagrid">
                <DataGrid.Columns>
                    <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                    <DataGridTextColumn Header="ID" Binding="{Binding Id}"/>
                    <DataGridTextColumn Header="AC" Binding="{Binding Ac}"/>
                    <DataGridTextColumn Header="HP" Binding="{Binding Hp}"/>

                </DataGrid.Columns>
            </DataGrid>
<Grid/>

正如您所看到的,某些值工作正常,但在这种情况下 AC 不起作用,因为 AC in 发现BaseMonster in the Monster class


您可以使用一些通用接口将 DataGrid 的 ItemsSource 绑定到列表。因此,不要绑定到 List 和 List

List<ITableEntry>

或者您可以尝试使用抽象类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将两个不同的类绑定到一个 Datagrid WPF 的相关文章

  • 在资源字典中添加字体系列

    我正在使用msdn教程 http msdn microsoft com en us library ms753303 aspx wa wsignin1 0要在我的 Wpf 应用程序中添加 FontFamily 在 csproj 中我有
  • 使用 Assembly.ReflectionOnlyLoadFrom 加载 WPF 项目引用的程序集时出现奇怪的 FileLoadException

    我有一个自定义 MSBuild 任务 可以查看程序集内部以获取一些属性元数据 Assembly assembly Assembly ReflectionOnlyLoadFrom AssemblyFile 这是我们的自动化构建 发布流程所使用
  • WPF 4.0 InvokeCommandAction 兼容性 (System.Windows.Interactivity)

    当我在 WPF 4 0 中插入 InvokeCommandAction Blend 4 SDK 时遇到问题 用户控件未显示 并且我遇到了一些例外情况 登录底部 如果我的 xaml 代码中没有该行 就没有问题 但没有事件触发器 我已经在外部灯
  • 在 VS2008 的 XAML 编辑器中禁用 Intellisense?

    有没有办法在 Visual Studio 2008 的 XAML 编辑器中禁用 Intellisense 打字时通常会消耗很大的性能 有时我会等待十秒或更长时间 直到列表自动弹出 似乎在 选项 gt 文本编辑器 gt XAML 中 Inte
  • 使用路径=。和绑定内的转换器

    我无法为 TreeViewItems 定义触发器 我相信这只是一些语法问题 但我不知道还要写什么 这是触发器
  • 将 RoutedEvent 转换为 WPF 中 MVVM 模式的命令

    如何将 Checkbox checked 路由事件转换为 MVVM 模式的命令 参考 考虑按钮单击路由事件 当我们为按钮分配命令时 button click 事件被视为命令 它执行相应的命令 我用谷歌搜索了它 我得到了 EventBehav
  • WPF:动画不流畅

    我正在制作一个动画TextBlock 60秒后增加FontSize从 8 点到 200 点 一切工作正常 除了我的动画随着文本的增长而上下移动 为什么会发生这种情况 是否可以避免这种情况 我有一个非常简单的 XAML 文件
  • 以编程方式绑定 WPF 中的附加属性

    我在用着杰森 坎普很酷CueBanner class http www ageektrapped com blog the missing net 4 cue banner in wpf i mean watermark in wpf 对于
  • 将“Android.Views.ViewGroup”添加到 Xamarin XAML 页面

    我需要一些帮助来添加Android Views ViewGroup到 XAML 页面 我有一个 Xamarin 项目 其解决方案结构如下所示 App1 ViewModels MyPageViewModel cs Views MyPageVi
  • 使用“isostore:/”方案从 XAML 中的独立存储访问图像

    我已经从网上下载了图像并将它们保存到独立存储中 现在我想在我的 XAML 文件中访问这些图像 并提供一个 Uri 作为对它们的引用 我已经使用 IsoStoreSpy 验证它们是否正确存储在我期望的位置 并且如果我打开文件并读取字节流 我可
  • 设置 Wpf 饼图样式

    这是我的饼图 xaml
  • 强制 protobuf-net 忽略 IEnumerable/ICollection 接口

    如何让 protobuf net v2 忽略我的类实现 ICollection IEnumerable 等的事实 对于这个特定场景 我只希望序列化标记为 ProtoMember 的字段 我目前正在从使用 protobuf net v1 转换
  • 通过 RDP 使用 WPF 的 Direct2d

    我正在开发一个 C 应用程序 它使用 SharpDx 通过 Direct2d 渲染地图 该地图与 D3DImage 一起显示在 WPF 主机上 在本地计算机上 一切正常 但当我尝试通过远程桌面连接时 D3DImage 会丢失其后备缓冲区 并
  • Xamarin Forms Binding - 访问父属性

    我无法访问页面的 ViewModel 属性以便将其绑定到 IsVisible 属性 如果我不设置 BindingContext 我只能绑定它 有没有办法可以在设置 BindingContext 的同时访问页面的 viewmodel root
  • 获取 wpf WriteableBitmap 的 DrawingContext

    有没有办法获得DrawingContext 或类似的东西 WriteableBitmap IE 让你调用简单的东西DrawLine DrawRectangle etc 种方法 而不是直接操作原始像素 我发现 Sixlettervariabl
  • 将字符串数组添加到组合框

    我有一个组合框 我想加载一个从方法返回的字符串数组 我目前只是用 for 循环加载它 但我认为应该可以将字符串数组直接分配给组合框 我只是想改进我的代码 我已经做了一些搜索 并且看到了使用数据范围或数据源的答案 但这些似乎都不起作用 我也尝
  • Mahapps 弹出窗口未与 caliburn.micro 一起出现

    我试图使用 mahapps 和 caliburn micro 在 wpf 中显示弹出窗口 不幸的是 弹出窗口的视图未得到解析 我得到的只是弹出窗口中显示的视图模型的类型名称 我需要根据 shell 中的 ActiveItem 显示弹出窗口
  • Caliburn.Micro - ShowDialog() 如何关闭对话框?

    EDIT 新信息 刚刚设法让记录器工作 老实说 我不知道 cm 有一个 并且在尝试使用时收到此消息TryClose TryClose requires a parent IConductor or a view with a Close m
  • 如何使用 DesignData 帮助开发 Metro 应用程序?

    我一直在 Windows Phone 应用程序中愉快地使用 DesignData 我希望使用它来帮助在 VS2012 Blend for VS 中的 Metro 风格应用程序中可视化设计 我已经尝试过希望显而易见的方法
  • 阻止用户取消选择列表框中的项目?

    我有一个列表框 里面有很多项目 用户可以单击某个项目来编辑其内容 如何防止用户取消选择所有项目 即 用户不应该无法选择任何内容 您的情况缺少一个案例 即清除列表后 您将选择列表中不再存在的项目 我通过添加额外的检查来解决这个问题 var l

随机推荐