2013-03-20 2 views
0
foreach (TableContainer table in listOpenUnjoinedTables) 
      { 
       var item = new Label(); 

       item.MouseEnter += item_MouseEnter; 
       item.MouseLeave += item_MouseLeave; 

       if (table.IsVirtual == false) 
       { 
        item.Content = "[" + table.TableDescription + "]"; 
       } 
       else 
       { 
        item.Content = "[" + table.View.Name + "]"; 
       } 

       item.Tag = table; 
       cmb.Items.Add(item); 

       if (item.ActualWidth > largestWidth) 
       { 
        largestWidth = item.ActualWidth; 
       } 
      } 

      if (largestWidth != 0) 
      { 
       foreach (Label label in cmb.Items) 
       { 
        label.Width = largestWidth; 
       } 
      } 
     } 

У меня есть ComboBox и добавляю к нему ярлыки вместо ComboBoxItems. Я бы хотел, чтобы метки заполнили все пространство в раскрывающемся списке. Я пытаюсь выполнить код выше, однако ширина метки всегда возвращается как 0, поэтому мой код не работает.Установите размер, чтобы заполнить пробел

Как это сделать? Я хотел бы, чтобы элементы (метки) ComboBox заполнили всю ширину списка выпадающего списка.

+1

Почему вы создаете элементы пользовательского интерфейса в коде для начала? Для этого и предназначен XAML. –

+0

@HighCore - он создается динамически во время выполнения. Это просто быстрое приложение-пример – WPF

+0

Неверно. Если вам нужен динамический интерфейс, используйте 'DataTemplates' и, возможно,' ItemsControl'. Не создавайте элементы интерфейса в коде. это не выиграть (взломать) формы. Даже если это быстрое приложение, сделайте это правильно. –

ответ

1

Я уверен, что в реальном мире не было бы никакого смысла иметь элементы управления Label как элементы ComboBox.

В любом случае, минимальный стиль, показанный ниже, присвоенный объекту ComboBox ItemContainerStyle, позаботится о правильном горизонтальном растяжении элементов.

<ComboBox Name="cmb"> 
    <ComboBox.ItemContainerStyle> 
     <Style TargetType="ComboBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"/> 
     </Style> 
    </ComboBox.ItemContainerStyle> 
</ComboBox> 
Смежные вопросы