繁体   English   中英

WrapPanel中的C#WPF控件

[英]C# WPF Controls in WrapPanel

在此处输入图片说明 大家好,我想通过代码添加一些控件,但是我有一个小问题。 我在WrapPanel中有复选框。 复选框将变大1.5倍。 当我更改窗口的大小时,它们彼此碰撞。 不进行转换,一切正常。 如何解决?

        List<System.Windows.Controls.CheckBox> CheckboxList = new List<CheckBox>();

        public List<string> Users = new List<string> { "First Student", "Very First Student", "Second Student", "Student Student" };

        for (int i = 0; i < Users.Count; i++)
        {
            CheckboxList.Add(new System.Windows.Controls.CheckBox());
            heckboxList[i].RenderTransform = new ScaleTransform(1.5,1.5);

            CheckboxList[i].Content = Users[i];
            CheckboxList[i].Margin = new Thickness(5, 5, 5, 0);
            Panel.Children.Add(CheckboxList[i]);             
        }
    }

RenderTransform属性用于获取/设置仅影响控件外观而不影响其布局逻辑的变换。 但是,您想要的是在逻辑上和视觉上变换控件,并实现您应该使用LayoutTransform属性。

它可能不是很漂亮,但是您可以将RenderTransform应用于面板本身,子代也将进行转换。

之所以不好看,是因为调整了面板的大小,因此您必须根据转换值应用新的大小。

可以使用如下代码片段:

double xScale = 1.5;
double yScale = 1.5;

Panel.RenderTransform = new ScaleTransform(xScale, yScale);
Panel.Width = Panel.Width / xScale;
Panel.Height = Panel.Height / yScale;

List<System.Windows.Controls.CheckBox> CheckboxList = new List<CheckBox>();

List<string> users = new List<string> { "First Student", "Very First Student", "Second Student", "Student Student" };

foreach (string user in users)
{
    CheckBox newItem = new CheckBox();
    newItem.Content = user;
    Panel.Children.Add(newItem);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM