1

ポップアップ内にリストボックスがあります。リストボックスからアイテムを選択した直後にポップアップを閉じるにはどうすればよいですか? コードは次のとおりです。

 <Popup x:Name="ColorPopup" AllowsTransparency="True" 
 IsOpen="{Binding ElementName=ColorToggle, Path=IsChecked}" Placement="Bottom" StaysOpen="False" PlacementTarget="{Binding ElementName=ColorToggle}">

  <Border x:Name="DropDownBorder1" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" Margin="0, 0,5,5" BorderThickness="1" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" Effect="{DynamicResource WindowShadowEffect}">
      <ListBox Name="ColorList" VerticalContentAlignment="Stretch" Margin="1, 3, 1, 3"   IsEnabled="True" Grid.Column="0" Background="Transparent" HorizontalContentAlignment="Center" SelectedItem="{Binding fColor}" SelectionMode="Single" Style="{StaticResource HorizontalListBoxStyle2}" ItemsSource="{Binding FillColors}">
      </ListBox>

   </Border>

</Popup>
4

1 に答える 1

2

SelectionChangedイベントをサブスクライブします。

コードビハインドでそれを行うことができます:

private void ListBox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
{
    // ColorPopup.IsOpen = false; ?? or ColorToggle.IsChecked = false; 
}
<ListBox SelectionChanged="ListBox_SelectionChanged_1" ... />

または、MVVMパターンを使用する場合...

たとえば、MVVM-Light の場合は次のようになります。

<ListBox ...>
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectionChanged">
            <cmd:EventToCommand Command="{Binding Path=ClosePopupCommand}" PassEventArgsToCommand="True" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</ListBox>

または Prism はほぼ同じである可能性があります:

 <ListBox>
      <i:Interaction.Triggers>
           <i:EventTrigger EventName="SelectionChanged">
                <prism:InvokeCommandAction Command="{Binding Path=ClosePupupCommand}" />
           </i:EventTrigger>
      </i:Interaction.Triggers>
 </ListBox> 

または、心が汚れている場合は、fColorプロパティ セッターでポップアップを閉じることもできます。:)

    public object fColor
    {
        get
        {
            return this.fColorField;
        }

        set
        {
            this.fColorField= value;
            IsColorToggelChecked = false;
            RaisePropertyChanged(() => this.fColor);
        }
    }
于 2013-04-25T14:19:51.793 に答える