单独选择ListView中的控件,而不是整个ListViewItem



我有一个ListView, ItemTemplate包含Image, TextBox, ComboBox, TextBlock等,当选择任何控件时,应突出显示所选控件,而不是整个ListViewItem,任何样式都可以。

XAML

<ListView Margin="10" ItemsSource="{Binding TCollection}" SelectedItem="{Binding SelectedTImage}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition Height="150"/>
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="150"/>
                </Grid.ColumnDefinitions>
                <StackPanel Orientation="Vertical">
                <Image Width="70" Height="70" HorizontalAlignment="Center">
                    <Image.Source>
                        <BitmapImage DecodePixelWidth="300" DecodePixelHeight="300" UriSource="{Binding TImage}"/>
                    </Image.Source>
                </Image>
                    <TextBox Text="{Binding text}"/>
                    <TextBlock Text="Contents"/>
                    <ComboBox/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>    

任何帮助

您需要的是禁用事件冒泡。当然,它会先点击控件,但是单击事件也会弹出到列表项。为了阻止它,你必须在所有控件(按钮等)上放置一个事件处理程序,并在处理程序中设置e.Handled = true以防止它进入ListViewItem

更多信息请参见:disable event-冒泡c# wpf。

如果你根本不希望项目被选中(很难用你的例子来说明),那么你会想要使用ItemsControl来代替。这将允许您绑定到一个项目集合并显示所有项目,但它没有选中项目的概念。

最新更新