Я хочу сохранить всплывающее окно WPF ComboBox до тех пор, пока код, который я написал, не закрыл его, как я могу это реализовать?Как сохранить всплывающее окно ComboBox, пока я не закрою код?
ответ
Обычно имущественные IsDropDown эффекты всплывающего окна, я редактировал шаблон COMBOBOX так всплывающий и ToggleButton кто контролирует it- бы bined другого имущества -tag
<Style x:Key="ComboBoxStyle1" TargetType="{x:Type ComboBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ComboBox}">
<Grid x:Name="MainGrid" SnapsToDevicePixels="true">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
</Grid.ColumnDefinitions>
<Popup x:Name="PART_Popup" StaysOpen="True" AllowsTransparency="true" Grid.ColumnSpan="2" IsOpen="{Binding Tag, RelativeSource={RelativeSource TemplatedParent}}" Margin="1" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Placement="Bottom">
<Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="Shdw" Color="Transparent" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}">
<Border x:Name="DropDownBorder" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}">
<ScrollViewer x:Name="DropDownScrollViewer">
<Grid RenderOptions.ClearTypeHint="Enabled">
<Canvas HorizontalAlignment="Left" Height="0" VerticalAlignment="Top" Width="0">
<Rectangle x:Name="OpaqueRect" Fill="{Binding Background, ElementName=DropDownBorder}" Height="{Binding ActualHeight, ElementName=DropDownBorder}" Width="{Binding ActualWidth, ElementName=DropDownBorder}"/>
</Canvas>
<ItemsPresenter x:Name="ItemsPresenter" KeyboardNavigation.DirectionalNavigation="Contained" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Grid>
</ScrollViewer>
</Border>
</Microsoft_Windows_Themes:SystemDropShadowChrome>
</Popup>
<ToggleButton BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}" Grid.ColumnSpan="2" IsChecked="{Binding Tag, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Style="{StaticResource ComboBoxReadonlyToggleButton}"/>
<ContentPresenter ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" IsHitTestVisible="false" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="true">
<Setter Property="Margin" TargetName="Shdw" Value="0,0,5,5"/>
<Setter Property="Color" TargetName="Shdw" Value="#71000000"/>
</Trigger>
<Trigger Property="HasItems" Value="false">
<Setter Property="Height" TargetName="DropDownBorder" Value="95"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
<Setter Property="Background" Value="#FFF4F4F4"/>
</Trigger>
<Trigger Property="IsGrouping" Value="true">
<Setter Property="ScrollViewer.CanContentScroll" Value="false"/>
</Trigger>
<Trigger Property="ScrollViewer.CanContentScroll" SourceName="DropDownScrollViewer" Value="false">
<Setter Property="Canvas.Top" TargetName="OpaqueRect" Value="{Binding VerticalOffset, ElementName=DropDownScrollViewer}"/>
<Setter Property="Canvas.Left" TargetName="OpaqueRect" Value="{Binding HorizontalOffset, ElementName=DropDownScrollViewer}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
затем, если вы хотите открыть \ близко в поле со списком вам просто нужно установить его свойство тега на True \ False:
<ComboBox Style="{DynamicResource ComboBoxStyle1}" Tag="True"/>
ComboBox имеет свойство IsDropDownOpen установить его в качестве True.And если вы хотите выпадающий оставаться открытым только во время редактирования, то вы можете установить StaysOpenOnEdit равна истинной
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ComboBox x:Name="cmb" IsDropDownOpen="True"/>
<Button Click="Button_Click" Content="OK" Grid.Row="2"/>
</Grid>
private void Button_Click(object sender, RoutedEventArgs e)
{
cmb.IsDropDownOpen = false;
}
<ComboBox x:Name="cmb" StaysOpenOnEdit="True"/>
Я надеюсь, что это поможет.
спасибо, но это не соответствовало моему требованию. ComboBox всегда должен всплывать, даже я выбираю любой ComboBoxItem. И я попытался добавить 'cmb.IsDropDownOpen = true;' в событие 'SelectionChanged', оно все равно закрывается автоматически. – 2013-03-20 09:36:59
Я обновил ответ – ethicallogics
Я думаю, что вы хотите, это StaysOpenOnEdit – ethicallogics
- 1. Выполнить код, пока отображается всплывающее окно
- 2. NSuserDefaults не сохраняется, пока я не закрою приложение swift
- 3. Всплывающее окно Combobox открыто прозрачно
- 4. Отключить галерею, пока не появится всплывающее окно
- 5. как сделать всплывающее окно wpf combobox Left
- 6. sqlite файл не появляется, пока я не закрою базу данных
- 7. всплывающее окно код
- 8. pyQt окно не обновляется, пока я не меняю окно
- 9. всплывающее окно не активируется
- 10. Я искал всплывающее окно
- 11. JSP Servlet Сохранить как всплывающее окно
- 12. Как сохранить всплывающее окно при изменении ориентации?
- 13. Подождите код javascript, пока окно не закроется?
- 14. Показать всплывающее окно, пока приложение не будет выполнено Загрузка
- 15. Как закодировать всплывающее окно?
- 16. Всплывающее окно DataTemplate XAML ComboBox не отображается при нажатии
- 17. Мое окно не отображается как всплывающее окно
- 18. Всплывающее окно не открывается
- 19. всплывающее окно как any.do
- 20. Всплывающее окно не отображается
- 21. Всплывающее окно не работает
- 22. Скрыть всплывающее окно
- 23. Всплывающее окно не работает
- 24. Отключить iPhone «сохранить изображение» всплывающее окно
- 25. всплывающее окно не закрывается
- 26. Как остановить всплывающее окно?
- 27. Как сохранить всплывающее окно до завершения процесса в приложении делегата?
- 28. Как сфокусировать всплывающее окно?
- 29. WPF: ComboBox ItemTemplate не применяется, пока я не выберу поле
- 30. Всплывающее окно не работает
избил меня! однако этот шаблон является неполным из-за отсутствия статических ресурсов. Некоторые люди, возможно, не смогут исправить это самостоятельно, когда читаете свой ответ. Я просто запустил образец шаблона, удалив все отсутствующие средства выделения ресурсов. Возможно, используйте свойство 'BasedOn' в стиле и оставляйте значения по умолчанию – Maverik
, вы правы! извините ... отредактировал ответ. Пожалуйста, отметьте этот ответ – user1064519
@ Maverik очень благодарен вашим работам, я видел вас в чате в WPF, говоря об этом, и я должен уйти, поэтому не мог оценить тогда. - :) – 2013-03-20 13:54:12