2009-05-26 17 views
12

Mam ListBox pokazujący elementy przy użyciu następujących DataTemplate:wybór ListBoxItem na TextBox naciskiem

<DataTemplate x:Key="PersonTemplate" DataType="{x:Type DAL:ResultItem}" > 
    <StackPanel Width="280" > 
    <TextBox BorderThickness="0" IsReadOnly="True" Background="Transparent" Text="{Binding FullName1, Mode=OneWay}"/> 
    ... 
    </StackPanel> 
</DataTemplate> 

Używam przezroczysta, tylko do odczytu, TextBox bez obramowania, w przeciwieństwie do TextBlock, ponieważ chcę, aby użytkownicy mogli , aby wybrać tekst do kopiowania. Czy powinienem zrobić to inaczej? Jak mogę to napisać, aby po kliknięciu na pole tekstowe użytkownik wybrał także element ListBoxItem?

Dzięki!

Odpowiedz

18

Okazało się, że odpowiedź jest po prostu zrobić to z punktu widzenia ListBoxItem, dodanie następujących do jego DataTemplate:

<Style.Triggers> 
    <Trigger Property="IsKeyboardFocusWithin" Value="True"> 
    <Setter Property="IsSelected" Value="True"/> 
    </Trigger> 
</Style.Triggers> 
+1

prostu to, czego szukasz! Kiedy wymyśliłem, żeby umieścić to w ItemContainerStyle z listy, to wszystko jest dobre! – David

+3

Aby zapoznać się z pełnym XAML, sprawdź to http://stackoverflow.com/questions/2960098/set-listboxitem-selected-when-child-textbox-is-focused/2962961#2962961 – iraSenthil