【问题标题】:Create User Rights Screen in WPF/C#在 WPF/C# 中创建用户权限屏幕
【发布时间】:2017-11-27 22:22:38
【问题描述】:

我在 MSSQL 中有这样的多对多关系设置:

(一个用户可以拥有零到多个权限,一个权限可以属于零到多个用户)

我正在尝试创建一个屏幕来管理像这样使用 WPF 和 C# 的单个用户的权限:

但我正在努力解决如何在屏幕中表示多对多数据库关系,即一对多关系(一个用户,多个权限)。我希望能够检查/取消选中一个权限,并使用尽可能多的 WPF 从该用户的权限数组中添加/删除它,而不必编写一堆笨拙/笨拙的 C# 代码。

注意:我正在使用 EDMX 将我的 SQL 表转换为 C# 类。

我当前用于数据网格的 WPF 只是:

<DataGrid Name="dataGrid" MinHeight="100" ItemsSource="{Binding RightsList}" AutoGenerateColumns="False" CanUserResizeRows="False" CanUserReorderColumns="False" CanUserAddRows="False" CanUserDeleteRows="False" CanUserSortColumns="True" Margin="0,0,0,10"/>

【问题讨论】:

  • 好吧,绑定和数据模型足以完成这项工作。神奇的部分是/必须在两者之间的代码中,我们看不到。
  • 顺便说一句,不要再考虑多对多了,你想呈现一个用户,这是一个简单的列表,列出了所有设置或未设置的权限
  • 你所说的笨拙/骇人的代码实际上是必要的。使用 MVVM 模式时最好使用 WPF。对于该模式,您需要编写代码。除非您想专门为视图构建实体模型和数据库模型,否则您不能仅仅期望您的实体模型就足够了,这将是一个糟糕的设计。
  • @CodingYoshi - 并不是我不想写 any 代码。这是我不希望它只是不必要和笨重的代码(因为不知道如何正确地做到这一点)。
  • 看看你的观点:它有一个用户和许多权限。通过检查将赋予用户一些权利。其他人不会给。您需要一个具有用户和权限集合的视图模型。每个权限都有一个属性Granted,它将绑定到复选框。你的观点是一对多的。您的数据库模型是多对多的。没关系。在保存期间,您将从视图模型(一个 id)和零个或多个权限中获取用户 ID,并将许多记录插入到 UserRight 表中。对于一个用户,这些记录将具有相同的 userid 但不同的 rightid。

标签: c# .net wpf visual-studio binding


【解决方案1】:

如果我是你,我将拥有一个使用其自己的 UserRightsViewModel 的权限控制,并将该 ViewModel 作为 UserViewModel 中的一个属性。假设您有一个 UserViewModel.Save(),它将调用 UserRightsViewModel.Save() 来正确保存权限。 UserRights 中的 DataGrid 将是一个选中列表,您只需保存选中的列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 2018-02-05
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-18
    相关资源
    最近更新 更多