Шаблон WPF ListBoxItem

У меня есть список с ItemTemplate (показан ниже). Когда я указываю курсором мыши на кнопку или текстовое поле, которые находятся в элементе списка, элемент помечается, а когда я указываю на пустое место в элементе списка, тогда нет. Это зависит от длины сетки столбцов. Что нужно изменить на элемент длины, зависит от длины списка

    <DataTemplate x:Key="MetroAdvensedListBoxItemTemplate">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="40"/>
            <ColumnDefinition Width="200"/>
        </Grid.ColumnDefinitions>

        <StackPanel Grid.Column="0" Margin="5">
            <TextBlock Text="{Binding Path=Title, FallbackValue=Title}" FontFamily="Segoe UI Light" FontSize="20" 
                        Foreground="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem, Mode=FindAncestor}, Path=Foreground}" />
        </StackPanel>

        <StackPanel Grid.Column="1" Margin="5">
            <Path Data="{Binding Image}" Stretch="Uniform" Width="28" Height="28" 
                Fill="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem, Mode=FindAncestor}, Path=Foreground}" />
        </StackPanel>   
    </Grid>
</DataTemplate>

person SergeyBukarev    schedule 03.01.2014    source источник
comment
что ты хочешь делать..?   -  person Vishal    schedule 03.01.2014
comment
Здесь нет вопросов.   -  person Steve    schedule 03.01.2014


Ответы (2)


Вам нужно сделать две вещи:

  1. Только когда графический элемент имеет цвет, он будет получать щелчки мыши (и другие события мыши), поэтому установите цвет фона сетки в DataTemplate.

  2. Растяните элементы в ListBox: Создание сетки в заполнении ListView ItemTemplate< /а>

person Emond Erno    schedule 03.01.2014

Я не понимаю, что это значит: "Когда я указываю курсором мыши на кнопку или текстовое поле, которые находятся в элементе списка, элемент помечается, а когда я указываю на пустое место в элементе списка, тогда не ."

Если вам нужно, чтобы ширина вашего элемента соответствовала ширине ListBox, установите ListBox.HorizontalContentAlignment="Stretch".

person Valera Scherbakov    schedule 03.01.2014