小编Nei*_*l B的帖子

如果ItemTemplate中的TextBox获得焦点,请选择ListBoxItem

我已经添加了DataTemplate一个ListBox类来将我的集合绑定到:

<ListBox x:Name="lstEmails" Height="259" Margin="12,0,12,41" Width="276"
         SelectionChanged="lstEmails_SelectionChanged">
    <ListBox.ItemTemplate> 
        <DataTemplate> 
            <StackPanel Orientation="Horizontal"> 
                <Label Visibility="Hidden" Content="{Binding ID}"></Label> 
                <TextBox Width="200"  Text="{Binding EmailAddress}"></TextBox> 
            </StackPanel> 
        </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
Run Code Online (Sandbox Code Playgroud)

这完全符合我的要求.虽然当我点击时TextBox,ListBox不会自动设置关联ListItemSelected.我可以在代码中执行此操作,但我更愿意将其用作组件(当时没有意外).

关于如何实现这一点的任何想法?


这似乎不起作用,它不会让我点击任何东西.我错过了什么.这是我的新XAML.

<UserControl.Resources> 
    <!--<TextBox x:Key="TB" x:Name="TextBoxInsideListBoxItemTemplate"> 
        <TextBox.Style>--> 
            <Style TargetType="{x:Type TextBox}"> 
                <Setter Property="IsHitTestVisible" Value="False" /> 
                <Style.Triggers> 
                    <DataTrigger Binding="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor,AncestorType={x:Type ListBoxItem}, AncestorLevel=1}}" 
                                                     Value="True"> 
                        <Setter Property="IsHitTestVisible" Value="True" /> 
                    </DataTrigger> 
                </Style.Triggers> 
            </Style> 
        <!--</TextBox.Style> 
    </TextBox>--> 
</UserControl.Resources> 
<Grid> 
    <ListBox x:Name="lstEmails" Height="259" Margin="12,0,12,41" Width="276" SelectionChanged="lstEmails_SelectionChanged">
        <ListBox.ItemTemplate> 
            <DataTemplate> 
                <StackPanel Orientation="Horizontal"> …
Run Code Online (Sandbox Code Playgroud)

wpf listbox datatemplate selection listboxitem

8
推荐指数
2
解决办法
5367
查看次数

标签 统计

datatemplate ×1

listbox ×1

listboxitem ×1

selection ×1

wpf ×1