WrapPanel 中的 C# WPF 控件
C# WPF Controls in WrapPanel
大家好,
我正在尝试通过代码添加一些控件,但我遇到了一个小问题。
我在 WrapPanel 中有复选框。复选框变大 1.5 倍。当我改变 window 的大小时,它们相互碰撞。
不改造一切正常。如何解决?
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
属性 用于get/set 仅影响控件外观而不影响其布局逻辑的变换。你想要的是在逻辑上和视觉上转换你的控件,并实现你应该使用 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);
}
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
属性 用于get/set 仅影响控件外观而不影响其布局逻辑的变换。你想要的是在逻辑上和视觉上转换你的控件,并实现你应该使用 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);
}