【问题标题】:C# WPF Controls in WrapPanelWrapPanel 中的 C# WPF 控件
【发布时间】:2015-12-28 20:15:33
【问题描述】:

大家好, 我正在尝试通过代码添加一些控件,但我有一个小问题。 我在 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]);             
        }
    }

【问题讨论】:

  • 您能展示一下您是如何创建环绕面板的吗?
  • WrapPanel 由 Xaml 创建: inside grid
  • 您将左右边距设置为 0,改为设置为 10。边距="10,10,85,0"/
  • 您是说 (10,0,95,0)?但这两种选择都没有帮助。

标签: c# wpf controls wrappanel


【解决方案1】:

RenderTransform 属性用于获取/设置仅影响控件外观而不影响其布局逻辑的转换。不过,您想要的是在逻辑上和视觉上转换您的控件,为了实现这一点,您应该改用 LayoutTransform 属性。

【讨论】:

    【解决方案2】:

    它可能不是很漂亮,但你可以将 RenderTransform 应用到面板本身,孩子们也会被变换。

    它不漂亮的原因是面板被调整了大小,所以你必须根据转换值应用一个新的大小。

    可以使用这样的代码 sn-p:

    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);
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 2017-02-06
      • 1970-01-01
      • 2016-06-28
      • 1970-01-01
      • 2013-07-19
      • 1970-01-01
      相关资源
      最近更新 更多