-2

次のようにコレクションをリストボックスにロードしようとしています(リストボックスの1つのアイテムには画像とテキストブロックが含まれています)画像の外側のアイテムごとに各アイテムをクリックすると(領域2)、選択の変更が正常に機能します(正しく強調表示されます) ; しかし、各画像をクリックして選択が変更された場合、これは正しく機能します.この背後にある理由は何ですか?
ここに画像の説明を入力アイテムごと

 <DataTemplate  x:Key="ObjectGalleryDataTemplate" DataType="{x:Type loc:ObjectTypes}" >
       <Button Margin="3" Width="80" Height="80" Click="click_object"BorderBrush="Transparent"  Tag="{Binding ObjectTypeID}">

<ItemsPanelTemplate x:Key="ObjectGalleryItemsPanelTemplate">

        <UniformGrid Rows="1"  HorizontalAlignment="Stretch"/>
        </ItemsPanelTemplate>

<StackPanel Orientation="Horizontal">
  <Grid><ListBox x:Name="ObjectTypesGallery" SelectionMode="Single" SelectionChanged="objectType_clik" BorderBrush="Transparent" SelectedIndex="0" ItemsSource="{Binding}" ItemTemplate="{DynamicResource ObjectGalleryDataTemplate}" ItemsPanel="{DynamicResource ObjectGalleryItemsPanelTemplate}">
      </ListBox>
   </Grid>
</StackPanel>
4

1 に答える 1

1

あなたが尋ねたので:

この背後にある理由は何ですか?

その理由は、リスト ボックス内の各項目が自動的に選択可能になるためです (UI の一部として 1 つ以上のリスト項目を選択できるようにするため)。しかし、リスト アイテム テンプレートにボタンが含まれているため、ボタンをクリックすると、システムはリスト アイテムの前で最初にクリックされたボタンに応答します。

これがどのように動作するかを指定しませんでした。<ItemsControl>個々のアイテムを選択したくない場合はを使用するか、中央のアイコンをクリックしたくない場合はに変更するか、同様のもの<Button>に変更する必要があると思います。<Image>または、両方のクリック イベント (ボタンのクリックとリスト項目の選択のクリック) を発生させたい場合は、イベント ハンドラーを使用して手動で実装する必要があります。

于 2013-07-02T13:16:56.703 に答える