У меня есть этот ComboBox в моем пользовательском контроле Silverlight:
<ComboBox
AutomationProperties.AutomationId="cmbProjects"
Grid.Row="0"
Grid.Column="2"
ItemsSource="{Binding Projects}"
SelectedItem="{Binding SelectedProject, Mode=TwoWay}"
Style="{StaticResource DefaultComboBoxStyle}"
>
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<TextBlock Foreground="DarkRed" AutomationProperties.AutomationId="{Binding Number}" Width="100" Margin="0" Text="{Binding Number, Converter={StaticResource StringFormatter},ConverterParameter='\{0\}'}" />
<TextBlock AutomationProperties.AutomationId="{Binding Description}" Text="{Binding Description, Converter={StaticResource StringFormatter},ConverterParameter='\{0\} '}" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Длина большинства элементов, заполняющих поле со списком, превышает ширину элемента управления. Когда я раскрываю список, раскрывающийся список расширяется, но не полностью, до ширины содержимого элемента, в результате чего содержимое обрезается горизонтальной полосой прокрутки. Это не происходит с точно таким же списком, где содержимое находится в пределах оригинальной ширины элемента управления.
В WPF я мог бы просто установить ширину контейнера элементов на auto; в Silverlight это приводит к катастрофической ошибке. Я могу установить для параметра огромное значение, но свиток все равно появляется, независимо от ширины. Кроме того, в Silverlight 2 beta 2 было свойство DropDownWidth с одним из параметров «Авто», которого в RTM я не вижу.
Я могу обойти это с небольшой хитростью, в основном скрывая горизонтальную полосу прокрутки и добавляя несколько символов, чтобы раскрывающийся список полностью раскрылся, чтобы показать содержимое элемента. Очевидно, этот взлом не идеален. Кто-нибудь испытывал подобную проблему? Что-то, чего мне не хватает, чтобы заставить всплывающее окно полностью развернуться без полосы прокрутки?
И.Б..