0

ユーザーが選択しないと開いたままになるコンボボックスがあります。トリガーを使用して、2 秒後にコンボボックスを閉じたいと思います。これは、これを達成しようとして失敗したイベントトリガーの試行を含むコンボボックス スタイルの一部です。

 <Style x:Key="ComboBoxStyle" TargetType="{x:Type ComboBox}">
   <Setter Property="FontFamily" Value="Bryant"/>
   <Setter Property="FontSize" Value="18px"/>
   <Setter Property="FontWeight" Value="Bold"/>
   <Setter Property="FocusVisualStyle" Value="{StaticResource ComboBoxFocusVisual}"/>
   <Setter Property="Foreground" Value="#FF000000"/>
   <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
   <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
   <Setter Property="Padding" Value="4,3"/>
   <Setter Property="Margin" Value="5"/>
   <Setter Property="Template">
    <Setter.Value>
     <ControlTemplate TargetType="{x:Type ComboBox}">
      <Grid x:Name="MainGrid" SnapsToDevicePixels="true">
       <Grid.ColumnDefinitions>
        <ColumnDefinition Width="0*"/>
        <ColumnDefinition/>
        <ColumnDefinition MinWidth="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" Width="0"/>
       </Grid.ColumnDefinitions>
       <Popup Margin="1" x:Name="PART_Popup" AllowsTransparency="true" StaysOpen="False" IsOpen="{Binding IsDropDownOpen, RelativeSource={RelativeSource TemplatedParent}}" Placement="Bottom" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Grid.ColumnSpan="2" Grid.Column="1">
         <Border x:Name="DropDownBorder" Background="{DynamicResource GrayBG}" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=MainGrid}" BorderBrush="{StaticResource GrayBGBorder}" BorderThickness="2,0,2,2" CornerRadius="0,0,4,4" Width="{Binding ActualWidth, ElementName=DropWidth}">
         <ScrollViewer CanContentScroll="true" Template="{DynamicResource NeeboScrollViewer}">
          <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.DirectionalNavigation="Contained"/>
         </ScrollViewer>
        </Border>
       </Popup>
       <ToggleButton x:Name="DropWidth" Style="{StaticResource ComboBoxReadonlyToggleButton}" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" Grid.ColumnSpan="2" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}" Grid.Column="1"/>
       <ContentPresenter HorizontalAlignment="Left" Margin="35,0,0,0" VerticalAlignment="Center" IsHitTestVisible="false" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Content="{TemplateBinding SelectionBoxItem}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}" ContentTemplateSelector="{TemplateBinding ItemTemplateSelector}" Grid.Column="1"/>
      </Grid>
      <ControlTemplate.Triggers>
       <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>
                            <EventTrigger RoutedEvent="(Popup.Opened)"  SourceName="PART_Popup" >
                                <BeginStoryboard>
                                    <Storyboard>
                                        <BooleanAnimationUsingKeyFrames Storyboard.TargetName="PART_Popup" Storyboard.TargetProperty="(Popup.IsOpen)">
                                            <DiscreteBooleanKeyFrame KeyTime="00:00:03"  Value="False"/>
                                        </BooleanAnimationUsingKeyFrames>
                                    </Storyboard>
                                </BeginStoryboard>
                            </EventTrigger>
                        </ControlTemplate.Triggers>
     </ControlTemplate>
    </Setter.Value>
   </Setter>
  </Style>

これを達成する方法について何か提案はありますか?

4

1 に答える 1

1

開いたイベントをサブスクライブし、まだ閉じていない場合は2秒待って閉じる動作を実装せずにこれを行う方法は考えられません。

添付されている動作がわからない場合は、Google で検索してください。

1 つを実装したら、デフォルトの動作としてスタイルに設定できます。

于 2010-09-23T21:44:13.903 に答える