gpt4 book ai didi

c# - MVVM:自定义 devexpress propertyGridControl

转载 作者:行者123 更新时间:2023-12-03 10:55:10 24 4
gpt4 key购买 nike

我的 XAML 中有一个 PropertyGridControl。它从 GridControl 的选定行中显示对象的属性。当我单击一行时,它会填充 PropertyGridControl。我正在使用 MVVM 模式。

propertyGridControl 的 XAML 是:

<dxprg:PropertyGridControl  SelectedObject="{Binding SelectedItem,ElementName=lst1}" ShowProperties="All" ShowCategories="False" Margin="473,0,0,133"/>

但是如何自定义 PropertyGridControl?
例子:

由此:

enter image description here

对此:
enter image description here

对我来说,重点是在单选按钮元素中自定义数据库的 bool /小整数字段和组合框中的外部键。

对于德米特里格:

按照你的提示,现在我有了我的 xaml 文件,其中包含:
<dxlc:DataLayoutControl Grid.Column="1" CurrentItem="{Binding GroupedLayoutData}" HorizontalAlignment="Left" Height="204" Margin="10,132,0,0" VerticalAlignment="Top" Width="278"/>

和我的 viewModel.cs 文件,我在其中按照示例创建了一个 UI。但是我什么都看不到,哪里错了?
   public class GroupedLayoutData {
const string JobGroup = "Job";
const string ContactGroup = "Contact";
const string AddressGroup = "Address";
const string PersonalGroup = "Personal";

[Display(GroupName = AddressGroup, ShortName = "", Order = 4)]
public string AddressLine1 { get; set; }
[Display(GroupName = AddressGroup, ShortName = "")]
public string AddressLine2 { get; set; }
[Display(GroupName = PersonalGroup, Name = "Birth date")]
public DateTime BirthDate { get; set; }
[Display(GroupName = ContactGroup)]
public string Email { get; set; }
[Display(Name = "First name", Order = 0)]
public string FirstName { get; set; }
[Display(GroupName = PersonalGroup, Order = 5)]
//public Gender Gender { get; set; }
//[Display(GroupName = JobGroup, Order = 2)]
public string Group { get; set; }
[Display(GroupName = JobGroup, Name = "Hire date")]
public DateTime HireDate { get; set; }
[Display(Name = "Last name", Order = 1)]
public string LastName { get; set; }
[Display(GroupName = ContactGroup, Order = 3), DataType(DataType.PhoneNumber)]
public string Phone { get; set; }
[Display(GroupName = JobGroup), DataType(DataType.Currency)]
public decimal Salary { get; set; }
[Display(GroupName = JobGroup, Order = 21)]
public string Title { get; set; }
}

编辑ii:如何将定义布局的类绑定(bind)到我的datalayoutcontrol?

最佳答案

在使用 DevExpress 完成您描述的任务时,我建议您尝试使用 DataLayoutControl .当您通过 DataLayoutControl.CurrentItem 将 DataLayoutControl 绑定(bind)到任何数据对象时,此控件将自动构建一个布局以编辑对象的公共(public)属性。属性(property)。

在 DataLayoutControl 和 Grid 的最小示例下方:

型号(C#代码):

public class Person {
const string PersonalGroup = "Personal";
[Display(Name = "First Name", GroupName = PersonalGroup)]
public string FirstName { get; set; }
[Display(Name = "Last Name", GroupName = PersonalGroup)]
public string LastName { get; set; }
[Display(Name = "Birth date", GroupName = PersonalGroup)]
public DateTime BirthDate { get; set; }
[Display(GroupName = PersonalGroup)]
public int Age { get; set; }

[Display(GroupName = "Contact"), DataType(DataType.PhoneNumber)]
public string Phone { get; set; }
}

View 模型(C# 代码)
public class ViewModel {
public ViewModel() {
Persons = new ObservableCollection<Person> {
new Person(){ FirstName = "Peter", LastName ="Parker", Age=33 },
new Person(){ FirstName = "Mary", LastName ="Jane" , Age=31 }
};
}
public ObservableCollection<Person> Persons { get; private set; }
public Person SelectedPerson { get; set; }
}

查看(XAML 标记):
<Window.DataContext>
<local:ViewModel />
</Window.DataContext>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<dxg:GridControl Grid.Column="0"
AutoGenerateColumns="AddNew"
ItemsSource="{Binding Persons}"
SelectedItem="{Binding SelectedPerson}"
>
<dxg:GridControl.View>
<dxg:TableView ShowGroupPanel="False" BestFitArea="All" AllowEditing="False"/>
</dxg:GridControl.View>
</dxg:GridControl>
<dxlc:DataLayoutControl Grid.Column="1"
CurrentItem="{Binding SelectedPerson}"
/>
</Grid>

结果(截图):
enter image description here

您可以在 this demo 中查看此方法的实际应用。 (链接指向 Silverlight 版本,但 WPF 版本的行为完全相同)。您可以使用 System.ComponentModel.DataAnnotations 命名空间中的属性,也可以使用 Fluent-API 来管理属性编辑器的生成过程。

更新:
您可以使用 DataLayoutControl.AutoGeneratingItem更改任何属性的编辑器的事件。此方法已在以下 DevExpress 支持线程中讨论:
- How to Customize controls inside WPF DataLayoutControl
- WPF DataLayoutControl questions
- DataLayoutControl

附言以后建议你用 DevExpress Support Center获得有关使用 DevExpress 产品的官方和有保证的帮助。

关于c# - MVVM:自定义 devexpress propertyGridControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25844799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com