2009-05-26 6 views
12

Ho un ListBox Items utilizzando il seguente DataTemplate:selezione ListBoxItem a fuoco TextBox

<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> 

Sto usando un sistema trasparente, di sola lettura, TextBox senza bordi in contrasto con un TextBlock perché voglio che gli utenti siano in grado per selezionare il testo da copiare. Dovrei farlo diversamente? Come posso scrivere questo in modo che quando l'utente fa clic sul TextBox, anche l'oggetto ListBoxItem venga selezionato?

Grazie!

risposta

18

ho scoperto che la risposta è solo quello di fare questo dal punto di vista ListBoxItem, aggiungendo quanto segue al suo DataTemplate:

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

Proprio quello che cercavo! Una volta che ho capito di metterlo in ItemContainerStyle della listbox è tutto ok! – David

+3

Per XAML completo, consultare http://stackoverflow.com/questions/2960098/set-listboxitem-isselected-when-child-textbox-is-focused/2962961#2962961 – iraSenthil