UserControl位置

时间:2011-11-15 18:29:13

标签: c# wpf user-controls

我正在开发一个WPF应用程序,我已经创建了一个自定义用户控件,因为我需要在主窗口上创建它的实例。所以,这就是我创建一个新实例的方式:

        var MyCard = new vCard();
        MainGrid.Children.Add(MyCard);
        Grid.SetColumn(MyCard, 1);
        Grid.SetRow(MyCard, 0);

但我需要按顺序放置每一个,所以,我怎样才能设置X&每个人的Y位置。我尝试在usercontrol中创建一个方法来设置margin属性,例如:

    public void SetX(double X)
    {
        double  Y =this.Margin.Top;            
        this.Margin = new Thickness(X, Y, 0, 0);            
    }

但是,它不起作用。还有其他办法吗?

3 个答案:

答案 0 :(得分:4)

当您将控件添加到Grid容器时,您应该通过设置ColumnRow来设置其位置。

为此,您需要将网格配置为具有添加新用户控件所需的行数和列数。

答案 1 :(得分:3)

经常被忽视的控制是UniformGrid

<UniformGrid Name="MainGrid" Rows="3" Columns="2"/>

继续像以前一样添加UserControl

var MyCard = new vCard();
MainGrid.Children.Add(MyCard);

这将为您的商品提供一个漂亮且均匀分布的容器。如果您想调整项目之间的间距,可以通过几种方式进行调整,最简单的方法是调整Margin本身的UserControl属性。

<UserControl Margin="8" ... />

答案 2 :(得分:1)

我会创建一个ObservableCollection个对象并将它们放在堆栈面板中。这样您就可以添加/删除/订购用户控件。然后你可以设置堆栈内部的大小。