0

私は を持ってListBoxDataTemplateます。テンプレートには がありButtonます。リスト内の各項目は、エンティティを示しています。

<ListBox Grid.Column="0"
             x:Name="ThemesList"
             ItemsSource="{Binding Themes}"
             HorizontalAlignment="Left"
             VerticalAlignment="Top"
             SelectedItem="{Binding SelectedTheme}" 
             ItemTemplate="{StaticResource ThemeListTemplate}"/>

<DataTemplate x:Key="ThemeListTemplate">
    <Grid Grid.Column="1"
          Grid.Row="0"
          HorizontalAlignment="Right" 
          Margin="10">

          <Grid.RowDefinitions>
              <RowDefinition/>
              <RowDefinition/>
          </Grid.RowDefinitions>

          <Button Grid.Row="0" 
                  HorizontalAlignment="Left"
                  Style="{StaticResource ElementButton}"
                  Command="{Binding Path=DataContext.ThemeEditorViewModel.OpenThemeEditorCommand, ElementName=ThemesBacklog}"
                  CommandParameter="{Binding Path=SelectedItem, ElementName=ThemesList}">

                <TextBlock Text="Edit"/>
          </Button>

        <Button Grid.Row="1" 
                HorizontalAlignment="Left"
                Style="{StaticResource ElementButton}"
                Command="{Binding Path=DataContext.ThemeDeleteCommand, ElementName=ThemesBacklog}"
                CommandParameter="{Binding Path=SelectedItem, ElementName=ThemesList}">

                <TextBlock Text="Delete"/>
        </Button>
    </Grid>
</DataTemplate>

コマンドでをクリックするButtonと、プロパティ値が渡されますSelectedItem。をクリックしてからクリックするListItemと、Buttonすべて問題ありません。コマンドの - を一度にクリックすると、Buttonnull が渡されます。このListItemにあるボタンを押してもフォーカスを受けませんListItem。この問題を解決するには?

4

1 に答える 1

0

トリガーのIsKeyboardFocusWithinプロパティを調べて、子 (ボタンなど) にフォーカスがあるかどうかを確認し、フォーカスがある場合は true に設定できます。ListBoxItemsIsSelected

ItemContainerStyleこれを行うには、次のように設定します。

<ListBox.ItemContainerStyle>
    <Style TargetType="{x:Type ListBoxItem}">
        <Style.Triggers>
            <Trigger Property="IsKeyboardFocusWithin" Value="True">
                <Setter Property="IsSelected" Value="True" />
            </Trigger>
        </Style.Triggers>
    </Style>
</ListBox.ItemContainerStyle>
于 2013-03-29T18:25:18.903 に答える