Элементы управления C# WPF в 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]);
}
}
2 ответа
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);
}