簡體   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