,可以通过以下步骤实现:
public class MyDataModel : INotifyPropertyChanged
{
private string name;
private object value;
public string Name
{
get { return name; }
set
{
name = value;
OnPropertyChanged(nameof(Name));
}
}
public object Value
{
get { return value; }
set
{
this.value = value;
OnPropertyChanged(nameof(Value));
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
<DataGrid ItemsSource="{Binding MyDataCollection}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Name}" />
<DataGridTemplateColumn Header="Value">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.Types, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding Value, UpdateSourceTrigger=PropertyChanged}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
public partial class MainWindow : Window
{
public ObservableCollection<MyDataModel> MyDataCollection { get; set; }
public List<Type> Types { get; set; }
public MainWindow()
{
InitializeComponent();
MyDataCollection = new ObservableCollection<MyDataModel>();
Types = new List<Type> { typeof(int), typeof(string), typeof(bool) };
DataContext = this;
}
// 添加动态属性的方法
private void AddPropertyButton_Click(object sender, RoutedEventArgs e)
{
MyDataCollection.Add(new MyDataModel());
}
}
通过以上步骤,你可以在WPF的DataGrid中动态添加属性,并通过ComboBox选择属性的类型。这样,当你在ComboBox中选择不同的类型时,对应属性的值将会自动更改为所选类型的默认值。
注意:以上示例中的Types属性是一个List<Type>类型的集合,用于存储可选择的属性类型。你可以根据实际需求进行修改和扩展。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云数据库(TencentDB)。
领取专属 10元无门槛券
手把手带您无忧上云