【问题标题】:What the wpf ways to extend base model property?wpf 扩展基本模型属性的方法是什么?
【发布时间】:2022-10-21 20:39:15
【问题描述】:

我有 Entity Framework Core 使用的基本模型的蓝图,但也将用于特定控件的特定添加。就我而言,它需要boolean 类型的属性作为复选框。我知道用户检查哪一行来执行某些操作。在这种情况下构建 WPF 应用程序时我该怎么办?继承的模型类是否只添加某些属性?或者一些我不知道的 WPF 技术?你会为这个继承模型类的组命名它的哪个文件夹?

看法

<ListView ItemsSource="{Binding Campaigns}">
    <ListView.View>
        <GridView AllowsColumnReorder="False">
            <GridViewColumn>
                <GridViewColumn.Header>
                    <CheckBox Cursor="Hand">
                        <CheckBox.ToolTip>
                            <TextBlock Text="Select All" />
                        </CheckBox.ToolTip>
                    </CheckBox>
                </GridViewColumn.Header>
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        // I need to bind value IsChecked to Campaigns Property
                        <CheckBox IsChecked="True" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="100" />
            <GridViewColumn DisplayMemberBinding="{Binding Url}" Header="Url" Width="100" />
        </GridView>
    </ListView.View>
</ListView>

实体框架的模型库,但我需要扩展特定控件的属性。

public class Campaign
{
    public long Id { get; set; }
    public string Name { get; set; } = string.Empty;
    public string Url { get; set; } = string.Empty;
    public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
}

视图模型

public ObservableCollection<Campaign> Campaigns { get; } = new ObservableCollection<Campaign>();

【问题讨论】:

  • 不要绑定到实体框架模型。构建视图模型。使用自动映射器将属性从 ef 模型复制到视图模型。
  • 一旦你这样做了,你就可以在你的视图模型中拥有你喜欢的任何额外属性。您可以将数据属性放在属性上进行验证。你可以有命令。所有这些都不会污染 ef 模型。

标签: c# wpf xaml entity-framework-core


【解决方案1】:

在某种程度上,我已经理解了你的问题。您希望基础模型中有“IsChecked”属性,但不希望它被实体框架映射。正确的?如果是 然后你可以使用[NotMapped] 属性。

【讨论】:

    猜你喜欢
    • 2010-09-29
    • 1970-01-01
    • 2018-07-12
    • 1970-01-01
    • 2015-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多