2015-12-28 2 views
1

enter image description here Привет, ребята, Я пытаюсь добавить элементы управления с помощью кода, но у меня есть одна небольшая проблема. У меня есть флажки внутри WrapPanel. Флажки преобразуются в 1,5 раза больше. Когда я меняю размер окна, они сталкиваются друг с другом. Без преобразования все нормально. Как это исправить?C# WPF Элементы управления в WrapPanel

 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]);    
     } 
    } 
+0

Можете ли вы показать, как создать панель обертку? – Valentin

+0

WrapPanel создан Xaml: внутри сетки – Jump3r

+0

Вы устанавливаете 0 на левое и правое поле, устанавливаете его вместо 10. Margin = "10,10,85,0"/ –

ответ

3

Свойство RenderTransform используется для получения/установки преобразования, которое влияет только на внешний вид элемента управления и не влияет на его макет логики. Однако вы хотите преобразовать свои элементы управления как логически, так и визуально, и для этого вы должны использовать свойство LayoutTransform.

1

Это может быть не очень красиво, но вы можете применить 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); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^