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