gpt4 book ai didi

.net - 手动创建未绑定(bind)的数据网格

转载 作者:可可西里 更新时间:2023-11-01 10:31:05 26 4
gpt4 key购买 nike

谁能告诉我是否可以创建数据并将其添加到未绑定(bind)的 WPF 工具包数据网格。

如果确实可行,有人可以提供以下示例吗:

以编程方式:创建数据网格创建一个数据网格文本列将数据网格文本列添加到数据网格创建数据网格将行的 datagridtextcolumn 的文本设置为“测试”将datagridrow添加到datagrid

我想创建一个未绑定(bind)的数据网格。我的原因是我想创建一个模板列,其中包含多个不同类型和数字的控件 - 2 个复选框、4 个单选按钮、5 个复选框等 - 它们是在运行时动态添加的,并且由于类型和数字未知,所以无法想到一种数据绑定(bind)它们的方法。我很高兴不受约束地工作。

提前致谢!

[编辑:我还没有找到这个问题的合适答案并开始赏金]

最佳答案

您可以使用 UserControl 来创建所需的控件。

Window1.xaml(片段)

<dg:DataGrid ItemsSource="{Binding}" CanUserAddRows="False" AutoGenerateColumns="False">
<dg:DataGrid.Columns>

<dg:DataGridTemplateColumn Header="Test" MinWidth="100">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<my:ControlA Foo="{Binding}"></my:ControlA>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>

</dg:DataGrid.Columns>
</dg:DataGrid>

Window1.xaml.cs

public partial class Window1 : Window
{
List<Foo> _items = new List<Foo>();

public Window1()
{
InitializeComponent();

_items.Add(new Foo { CheckBoxCount = 2, TextBoxCount = 1 });
_items.Add(new Foo { CheckBoxCount = 3, TextBoxCount = 0 });

DataContext = _items;
}
}

控件A.xaml

<UserControl x:Class="Demo.ControlA"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel x:Name="_placeHolder">
</StackPanel>
</UserControl>

ControlA.xaml.cs

public partial class ControlA : UserControl
{
public ControlA()
{
InitializeComponent();

Loaded += new RoutedEventHandler(ControlA_Loaded);
}

void ControlA_Loaded(object sender, RoutedEventArgs e)
{
if (Foo != null)
{
for (int it = 0; it < Foo.CheckBoxCount; it++)
_placeHolder.Children.Add(new CheckBox());

for (int it = 0; it < Foo.TextBoxCount; it++)
_placeHolder.Children.Add(new TextBox());
}
}

public static readonly DependencyProperty FooProperty =
DependencyProperty.Register("Foo", typeof(Foo), typeof(ControlA));

public Foo Foo
{
get { return (Foo)GetValue(FooProperty); }
set { SetValue(FooProperty, value); }
}
}

Foo.cs

public class Foo
{
public int TextBoxCount { get; set; }
public int CheckBoxCount { get; set; }
}

希望这对您有所帮助。

P.S. 应该可以到refactor DataGridTemplateColumn 到单独的 UserControl 中。

关于.net - 手动创建未绑定(bind)的数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570600/

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