WPF Kliknięcie kontrolki wewnątrz ListBoxItem nie zaznacza wiersza ani nie ustawia właściwości

0

Witam, Mam mały problem z kontrolką ListBox. Otóz w xaml'u mam następujący kod:

<ListBox>
	<ListBox.ItemTemplate>
		<DataTemplate>
			<ListBoxItem>
				<Label Content="{Binding}" >
					<Label.InputBindings>
						<MouseBinding MouseAction="LeftClick"
									Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=SelectedItem, Mode=TwoWay}"
										CommandParameter="{Binding}" />
					</Label.InputBindings>
				</Label>
			</ListBoxItem>
		</DataTemplate>
	</ListBox.ItemTemplate>
<ListBox>

Po uruchomieniu wszystko wyświetla się tak jak chciałem. Natomiast właściwość SelectedItem oraz cały wiersz, ustawia się tylko gdy kliknę obok Labela. Nie mogę jednak ustawić właściwości gdy kliknę bezpośrednio w ikonkę z tekstem. Jak to rozwiązać?

1

Nie rozumiem do końca jaka logika za tym wszystkim stoi i nie czy moja propozycja nie popsuje czegoś innego ale zamień swój kod na coś takiego:

		<ListBox>
			<ListBox.ItemTemplate>
				<DataTemplate>
						<Label Content="{Binding}" >
							<Label.InputBindings>
								<MouseBinding MouseAction="LeftClick"
                                    Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=SelectedItem, Mode=TwoWay}"
                                        CommandParameter="{Binding}" />
							</Label.InputBindings>
						</Label>
				</DataTemplate>
			</ListBox.ItemTemplate>
		</ListBox>

Ale da mnie całość będzie działać tak samo jak zrobię tak, oczywiście istnieje duże prawdopodobieństwo że się mylę.

<ListBox ItemsSource="{Binding Items}" SelectedItem="{Binding SelectedItem}" />
0

Aż dziw bierze, że wystarczyło tylko <ListBoxItem> wyrzucić. Dzieki wielkie.

0

Podczas generowania listy utworzone zostało coś takiego mniej więcej:

		 <ListBox>
			<ListBoxItem>
				<ListBoxItem Content="Jeden"><!-- Lable itd. --></ListBoxItem>
			</ListBoxItem>
			<ListBoxItem>
				<ListBoxItem Content="Dwa">
					<!-- Lable itd. -->
				</ListBoxItem>
			</ListBoxItem>
			<ListBoxItem>
				<ListBoxItem Content="Trzy">
					<!-- Lable itd. -->
				</ListBoxItem>
			</ListBoxItem>
			<!-- itd. -->
		</ListBox>

Jak byś wkleił to odpalił pod VS uzyskał być dokładnie taki sam efekt jak w kodzie podanym przez Ciebie. :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1