Как держать раскрывающийся список в серебристом свете ComboBox? - PullRequest
1 голос
/ 23 сентября 2010

Я использую ComboBox как всплывающее окно. Предметом для моего ComboBox является Grid. В сетке есть элемент управления TreeView и две кнопки. Элементы TreeView являются CheckBoxes.
Когда я нажимаю кнопки или флажки, раскрывающийся список остается открытым, но когда я нажимаю на другую часть сетки, я закрываюсь. Есть ли способ держать его открытым, пока я не нажму за пределами ComboBox?
Я много смотрел в Google, но ничего не нашел.

<UserControl.Resources>        
    <common:HierarchicalDataTemplate x:Key="HierarchicalDataTemplate_AddDivision"  ItemsSource="{Binding DivisionIDs}">
        <StackPanel Orientation="Horizontal">
            <CheckBox IsChecked="{Binding IsChecked, Mode=TwoWay}" Click="CheckBox_Click" />
            <TextBlock Text="{Binding ToDisplay}"/>
        </StackPanel>
    </common:HierarchicalDataTemplate>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0.5*"/>
        <ColumnDefinition Width="0.5*"/>
    </Grid.ColumnDefinitions>

    <Grid.RowDefinitions>
        <RowDefinition Height="0.90*"/>
        <RowDefinition Height="0.10*"/>
    </Grid.RowDefinitions>
    <controls:TreeView Height="250" x:Name="itemsToShow" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="230" 
                       Grid.ColumnSpan="2"  ItemTemplate="{StaticResource HierarchicalDataTemplate_AddDivision}" SelectedItemChanged="itemsToShow_SelectedItemChanged" />
    <Button Margin="28,0,22,5" Content="Ok" Grid.Row="1" d:LayoutOverrides="Height" Click="OkButton_Click"/>
    <Button Margin="23,0,27,5" Content="Cancel" Grid.Column="1" Grid.Row="1" d:LayoutOverrides="Height" Click="CancelButton_Click"/>  
</Grid>   

А это ComboBox

<ComboBox Grid.Row="1" Width="100" Height="20" HorizontalAlignment="Left" VerticalAlignment="Top"  >
   <ComboBox.ItemTemplate>
      <DataTemplate>
       <my1:ShowDivisions x:Name="ShowDivs" Loaded="ShowDivs_Loaded" ParentComboBox="{Binding ElementName=addStr2}"/>                                            
      </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>

1 Ответ

1 голос
/ 23 сентября 2010

Похоже, ваши кнопки не заполняют все пространство в раскрывающейся части ComboBox.

В этом случае вам просто нужно иметь кликабельный объект за кнопками, чтобы съесть любой случайный щелчок мыши: Попробуйте прямоугольник с фоном, установленным в «Прозрачный» (не просто цвет с альфа-значением 0, так как он не кликабелен).

(Убедитесь, что в прямоугольнике также установлен IsHittestVisible).

...