2009-10-17 2 views
3

Следуя за XAML, «Мой материал» находится в центре ComboBoxдо Открываю ComboBox, когда он правильно растягивается.ComboBoxItem для полной ширины ComboBox, при использовании SelectedIndex или навигационной клавиатуры?

<ComboBox Height="30" Width="300" HorizontalContentAlignment="Stretch" SelectedIndex="0"> 
     <ComboBoxItem HorizontalContentAlignment="Stretch"> 
      <Border Background="Red"> 
       <TextBlock>My stuff...</TextBlock> 
      </Border> 
     </ComboBoxItem> 
    </ComboBox> 

Вопрос заключается в том, можно ли получить ComboBoxItem растягиваться, даже если он выбран с помощью SelectedIndex? Такая же ошибка или функция, если SelectedIndex нетронутой (-1), и один выбирает элемент с помощью клавиатуры.

Обходным способом является, вероятно, открытие ComboBox программно в начале приложения, что довольно уродливо.

ответ

6

Вам просто нужно установить ширину вашей границы динамической ширину вашего outercontrol:

Э.Г.

Width="{Binding ElementName=combox1, Path=ActualWidth}"> 

Попробуйте это:

<ComboBox x:Name="combox1" Height="30" Width="300" HorizontalContentAlignment="Stretch" 
    SelectedIndex="0"> 
    <ComboBoxItem HorizontalContentAlignment="Stretch"> 
     <Border Background="Red" Width="{Binding ElementName=combox1, Path=ActualWidth}"> 
      <TextBlock>My stuff...</TextBlock> 
     </Border> 
    </ComboBoxItem> 
</ComboBox> 
+0

Теперь открыт (с помощью мыши) выпадающий слишком широк, хмм ... – Ciantic

+0

это также слишком широк, если ActualWidth применяется к ComboBoxItem (но только несколько пикселей) с помощью Chrome тему Windows. – Ciantic

+0

Не удалось найти более точное решение, выбрав это. – Ciantic

1

Я вижу, да - я уверен, что есть способ обойти это. Это действительно зависит от того, какой конечный результат вы хотите. У каждого из ваших элементов данных есть цвет фона разницы, чтобы идентифицировать их, или это просто цвет фона для всей вашей комбинированной копии, которую вы пытаетесь достичь.

Если это последний, попробуйте это - и, возможно, также удалите выделенный цвет выделения, иначе возможно, что код за маршрутом правильный, с точки зрения предварительного выбора вашего первого элемента, поскольку это может быть вариант.

Пример всему Цвет фона:

<ComboBox Background="Red" x:Name="combox2" Height="30" HorizontalContentAlignment="Stretch" SelectedIndex="0"> 
     <ComboBoxItem Background="Red" HorizontalContentAlignment="Stretch"> 
      <TextBlock Background="Red">My stuff...</TextBlock> 
     </ComboBoxItem> 
    </ComboBox> 

Надеется, что это помогает! :)

YourCodeFactory.com