【发布时间】: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