[英]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.