在WPF中以编程方式填充GridBox和TextBoxes

时间:2011-04-07 15:54:44

标签: c# wpf silverlight textbox grid

我们假设我在Grid中定义了两个TextBox和几个XAML es。我想在运行时将这些TextBox es放在Grid中(我知道应该在启动应用程序后TextBox放置哪个Grid

我认为可以在我的C#代码中向Grid添加行定义,但是文本框会绑定到某些Style

也许有一个简单的解决方案(完全在XAML中 - 首选)?

所以问题是 - 如何在运行时使用项目(文本框)和XAML中定义的网格动态填充网格?这两个项目都绑定到某些样式等。

提前感谢您的回复和提示!

干杯

3 个答案:

答案 0 :(得分:2)

好的,所以我试了一下:

Grid uiElement = (Grid)txt1.Parent;

        if (uiElement.Children.Contains(txt1))
            uiElement.Children.Remove(txt1);

        txt1.Margin = new Thickness(0);

        Grid.SetRow(txt1, 3);
        Grid.SetColumn(txt1, 2);
        grid.Children.Add(txt1);

这是在代码背后(TextBox)。

您显然必须配置代码,但这是基本示例。

首先必须从Text的父控件中删除TextBox(Code假设它是一个网格)。

然后你必须将保证金设置为0(或者其他东西,如果它在父网格中的可能性很大,边距可能很大,这将导致控件关闭屏幕)。

然后设置控制列和行,然后将控件添加到新网格。

编辑:如果您想要自定义它以便循环网格并将该网格中的所有文本框移到另一个网格中,请告诉我

答案 1 :(得分:0)

也许您可以使用ItemsControl来实现您想要的结果。

答案 2 :(得分:0)

我不能完全解答您的问题,但如果我理解正确,您希望使用XAML在网格中使用TextBoxes。

如果是这种情况

你可以这样做:

 <GridViewColumn CellTemplate="{StaticResource editColumnTemplate}"/>

然后在静态资源中:

 <DataTemplate x:Key="editColumnTemplate">
            <TextBox Text="{Binding Path=DataContext.Foo}" />
 </DataTemplate>

HTH