Laden...

Listview + Scrollviewer, kein Klick möglich

Erstellt von supaburn vor 13 Jahren Letzter Beitrag vor 13 Jahren 2.569 Views
S
supaburn Themenstarter:in
17 Beiträge seit 2009
vor 13 Jahren
Listview + Scrollviewer, kein Klick möglich

Hallo,

ich habe eine Listview die ich mit XML-Daten füttere.
Den Style der ListviewItems und des Scrollviewers habe ich ein wenig verändert.
Soweit läuft das auch alles die angepasste Scrollbar wird eingeblendet und der Inhalt der Listview ist scrollbar.
Allerdings reagiert die Listview nicht mehr auf meine linke Maustaste 😉, es wird nichts ausgewählt.

ListView


 <ListView 
            x:Name="itemsList" FontSize="24" Opacity="0.9"
            Margin="158,0,124,0"
            BorderBrush="Black"
            SelectionMode="Single"
            ItemsSource="{Binding}"
            ItemContainerStyle="{StaticResource listviewDefaultStyle}"
            BorderThickness="0.0"
            AlternationCount="2" 
            
            SelectionChanged="itemsList_SelectionChanged"
            Background="Transparent" SnapsToDevicePixels="True" ClipToBounds="True" Cursor="Arrow">
            
        </ListView>

ListViewItem-Style


<Style x:Key="listviewDefaultStyle" TargetType="ListViewItem" >   
               
                <Style.Triggers>
                    <Trigger Property="ItemsControl.AlternationIndex" Value="0">
                        <Setter Property="Background" Value="#413A34"></Setter>
                        <Setter Property="BorderBrush" Value="Black"></Setter>
                        <Setter Property="BorderThickness" Value="1.0"></Setter>
                        <Setter Property="Foreground" Value="#EB7B28"></Setter>
                        <Setter Property="Height" Value="80"></Setter>
                        
                    </Trigger>
 
                    <Trigger Property="ItemsControl.AlternationIndex" Value="1">
                        <Setter Property="Background" Value="#252422"></Setter>
                        <Setter Property="BorderBrush" Value="Black"></Setter>
                        <Setter Property="BorderThickness" Value="1.0"></Setter>
                        <Setter Property="Foreground" Value="WhiteSmoke"></Setter>
                        <Setter Property="Height" Value="80"></Setter>
                        
                    </Trigger>
                </Style.Triggers>
            </Style>

Scrollviewer



        <Style x:Key="{x:Type ScrollViewer}" 
           TargetType="{x:Type ScrollViewer}">
            <Setter Property="HorizontalScrollBarVisibility" Value="Hidden"/>
            <Setter Property="VerticalScrollBarVisibility" Value="Hidden"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ScrollViewer}">
                        <Grid>
                            <Grid Background="{TemplateBinding Background}">
                                <ScrollContentPresenter 
                                    x:Name="PART_ScrollContentPresenter"
                                    Margin="{TemplateBinding Padding}"
                                    Content="{TemplateBinding Content}"
                                    ContentTemplate="{TemplateBinding ContentTemplate}"
                                    CanContentScroll="{TemplateBinding CanContentScroll}"/>
                            </Grid>
                            <Grid Background="Transparent">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="Auto"/>
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="*"/>
                                    <RowDefinition Height="Auto"/>
                                </Grid.RowDefinitions>                                
                                <ScrollBar 
                                    x:Name="PART_VerticalScrollBar"
                                    Grid.Column="1"
                                    Minimum="0.0"
                                    Maximum="{TemplateBinding ScrollableHeight}"
                                    ViewportSize="{TemplateBinding ViewportHeight}"
                                    Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=VerticalOffset, Mode=OneWay}"
                                    Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"         
                                    Cursor="Arrow"
                                    AutomationProperties.AutomationId="VerticalScrollBar"/>
                                <ScrollBar 
                                    x:Name="PART_HorizontalScrollBar"
                                    Orientation="Horizontal"
                                    Grid.Row="1"
                                    Minimum="0.0"
                                    Maximum="{TemplateBinding ScrollableWidth}"
                                    ViewportSize="{TemplateBinding ViewportWidth}"
                                    Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=HorizontalOffset, Mode=OneWay}"
                                    Visibility="{TemplateBinding ComputedHorizontalScrollBarVisibility}"
                                    Cursor="Arrow"
                                    AutomationProperties.AutomationId="HorizontalScrollBar"/>                                
                            </Grid>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsEnabled" 
                     Value="false">
                    <Setter Property="Foreground" 
                        Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                </Trigger>
                <Trigger Property="IsMouseOver"
                     Value="true">
                    <Setter Property="HorizontalScrollBarVisibility"
                        Value="Visible"/>
                    <Setter Property="VerticalScrollBarVisibility"
                        Value="Visible"/>
                </Trigger>
            </Style.Triggers>
        </Style>
        <Style x:Key="ScrollBarButton"
           TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle"
                Value="true"/>
            <Setter Property="Focusable"
                Value="false"/>
            <Setter Property="IsTabStop"
                Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Path x:Name="Arrow" HorizontalAlignment="Center" VerticalAlignment="Center" Fill="{TemplateBinding Background}"/>
                        <ControlTemplate.Triggers>
                            <Trigger Property="theme:ScrollChrome.ScrollGlyph" Value="UpArrow">
                                <Setter TargetName="Arrow" Property="Data" Value="M 3,0 l 3,8 l -6,0 Z"/>
                            </Trigger>
                            <Trigger Property="theme:ScrollChrome.ScrollGlyph" Value="DownArrow">
                                <Setter TargetName="Arrow" Property="Data" Value="M 0,0 l 6,0 l -3,8 Z"/>
                            </Trigger>
                            <Trigger Property="theme:ScrollChrome.ScrollGlyph" Value="LeftArrow">
                                <Setter TargetName="Arrow" Property="Data" Value="M 0,3 l 8,-3 l 0,6 Z"/>
                            </Trigger>
                            <Trigger Property="theme:ScrollChrome.ScrollGlyph" Value="RightArrow">
                                <Setter TargetName="Arrow" Property="Data" Value="M 0,0 l 8,3 l -8,3 Z"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="ScrollBarThumb"
           TargetType="{x:Type Thumb}">
            <Setter Property="OverridesDefaultStyle"
                Value="true"/>
            <Setter Property="IsTabStop"
                Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Thumb}">
                        <Border Background="#FF777777" CornerRadius="2"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="HorizontalScrollBarPageButton"
           TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle"
                Value="true"/>
            <Setter Property="Background"
                Value="Transparent"/>
            <Setter Property="Focusable"
                Value="false"/>
            <Setter Property="IsTabStop"
                Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Rectangle Fill="{TemplateBinding Background}"
                               Width="{TemplateBinding Width}"
                               Height="{TemplateBinding Height}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="VerticalScrollBarPageButton"
           TargetType="{x:Type RepeatButton}">
            <Setter Property="OverridesDefaultStyle"
                Value="true"/>
            <Setter Property="Background"
                Value="Transparent"/>
            <Setter Property="Focusable"
                Value="false"/>
            <Setter Property="IsTabStop"
                Value="false"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type RepeatButton}">
                        <Rectangle Fill="{TemplateBinding Background}"
                               Width="{TemplateBinding Width}"
                               Height="{TemplateBinding Height}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="{x:Type ScrollBar}"
           TargetType="{x:Type ScrollBar}">
            <Setter Property="Background"
                Value="#FF979797"/>
            <Setter Property="Stylus.IsPressAndHoldEnabled"
                Value="false"/>
            <Setter Property="Stylus.IsFlicksEnabled"
                Value="false"/>
            <Setter Property="Foreground"
                Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
            <Setter Property="Width"
                Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/>
            <Setter Property="MinWidth"
                Value="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"/>
            <Setter Property="Margin"
                Value="2"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ScrollBar}">
                        <Border 
                            x:Name="Bg"
                            CornerRadius="2"                         
                            Margin="2"
                            Opacity="0.75"
                            Background="{TemplateBinding Background}"
                            VerticalAlignment="Bottom">
                            <Grid
                                SnapsToDevicePixels="true">
                                <Grid.RowDefinitions>                                    
                                    <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                    <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                </Grid.RowDefinitions>
                                <RepeatButton
                                    Style="{StaticResource ScrollBarButton}"
                                    Background="#FFCBCBCB"                                    
                                    IsEnabled="{TemplateBinding IsMouseOver}"
                                    Command="{x:Static ScrollBar.LineUpCommand}"
                                    theme:ScrollChrome.ScrollGlyph="UpArrow"
                                    Margin="0,4"/>
                                <RepeatButton                   
                                    Style="{StaticResource ScrollBarButton}"
                                    Background="#FFCBCBCB"
                                    Grid.Row="1"
                                    IsEnabled="{TemplateBinding IsMouseOver}"
                                    Command="{x:Static ScrollBar.LineDownCommand}"
                                    theme:ScrollChrome.ScrollGlyph="DownArrow"
                                    Margin="0,4">
                                </RepeatButton>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsEnabled"
                                 Value="false">
                                <Setter TargetName="Bg"
                                    Property="Visibility"
                                    Value="Hidden"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True"/>
                        <Condition Property="Orientation" Value="Vertical"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Width"
                            Value="30"/>
                        <Setter
                            Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ScrollBar}">
                                    <Border 
                                        CornerRadius="4"                         
                                        Margin="2"
                                        Opacity="0.75"
                                        Background="{TemplateBinding Background}">
                                        <Grid
                                            SnapsToDevicePixels="true">
                                            <Grid.RowDefinitions>
                                                <RowDefinition Height="0.00001*"/>
                                                <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                                <RowDefinition MaxHeight="{DynamicResource {x:Static SystemParameters.VerticalScrollBarButtonHeightKey}}"/>
                                            </Grid.RowDefinitions>
                                            <Track
                                                Name="PART_Track"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                IsDirectionReversed="true">
                                                <Track.DecreaseRepeatButton>
                                                    <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}"
                                                        Command="{x:Static ScrollBar.PageUpCommand}"/>
                                                </Track.DecreaseRepeatButton>
                                                <Track.IncreaseRepeatButton>
                                                    <RepeatButton Style="{StaticResource VerticalScrollBarPageButton}"
                                                        Command="{x:Static ScrollBar.PageDownCommand}"/>
                                                </Track.IncreaseRepeatButton>
                                                <Track.Thumb>
                                                    <Thumb Style="{StaticResource ScrollBarThumb}"
                                                        theme:ScrollChrome.ScrollGlyph="VerticalGripper"
                                                        Margin="2"/>
                                                </Track.Thumb>
                                            </Track>
                                            <RepeatButton
                                                Style="{StaticResource ScrollBarButton}"
                                                Background="#FFFFFFFF"
                                                Grid.Row="1"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineUpCommand}"
                                                theme:ScrollChrome.ScrollGlyph="UpArrow"
                                                RenderTransformOrigin="0.5, 0.5">
                                                <RepeatButton.RenderTransform>
                                                    <ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
                                                </RepeatButton.RenderTransform>
                                            </RepeatButton>
                                            <RepeatButton                           
                                                Style="{StaticResource ScrollBarButton}"
                                                Background="#FFFFFFFF"
                                                Grid.Row="2"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineDownCommand}"
                                                theme:ScrollChrome.ScrollGlyph="DownArrow"
                                                RenderTransformOrigin="0.5, 0.5">
                                                <RepeatButton.RenderTransform>
                                                    <ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
                                                </RepeatButton.RenderTransform>
                                            </RepeatButton>
                                        </Grid>
                                    </Border>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </MultiTrigger.Setters>
                </MultiTrigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="Orientation" Value="Horizontal"/>
                        <Condition Property="IsMouseOver" Value="False"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Width"
                            Value="Auto"/>
                        <Setter Property="MinWidth"
                            Value="0"/>
                        <Setter Property="Height"
                            Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>
                        <Setter Property="MinHeight"
                            Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ScrollBar}">
                                    <Border 
                                        x:Name="Bg"
                                        CornerRadius="2"                         
                                        Margin="2"
                                        Opacity="0.75"
                                        Background="{TemplateBinding Background}"
                                        HorizontalAlignment="Right">
                                        <Grid
                                            SnapsToDevicePixels="true">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
                                                <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
                                            </Grid.ColumnDefinitions>
                                            <RepeatButton
                                                Style="{StaticResource ScrollBarButton}"    
                                                Background="#FFCBCBCB"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineLeftCommand}"
                                                theme:ScrollChrome.ScrollGlyph="LeftArrow"
                                                Margin="4,0"/>
                                            <RepeatButton
                                                Style="{StaticResource ScrollBarButton}"                                        
                                                Background="#FFCBCBCB"
                                                Grid.Column="1"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineRightCommand}"
                                                theme:ScrollChrome.ScrollGlyph="RightArrow"
                                                Margin="4,0"/>
                                        </Grid>
                                    </Border>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsEnabled"
                                             Value="false">
                                            <Setter TargetName="Bg"
                                                Property="Visibility"
                                                Value="Hidden"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </MultiTrigger.Setters>
                </MultiTrigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True"/>
                        <Condition Property="Orientation" Value="Horizontal"/>
                    </MultiTrigger.Conditions>
                    <MultiTrigger.Setters>
                        <Setter Property="Width"
                            Value="Auto"/>
                        <Setter Property="MinWidth"
                            Value="0"/>
                        <Setter Property="Height"
                            Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>
                        <Setter Property="MinHeight"
                            Value="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarHeightKey}}"/>                        
                        <Setter Property="Height"
                            Value="30"/>
                        <Setter
                            Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type ScrollBar}">
                                    <Border 
                                        CornerRadius="4"                         
                                        Margin="2"
                                        Opacity="0.75"
                                        Background="{TemplateBinding Background}">
                                        <Grid
                                            SnapsToDevicePixels="true">
                                            <Grid.ColumnDefinitions>
                                                <ColumnDefinition Width="0.00001*"/>
                                                <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
                                                <ColumnDefinition MaxWidth="{DynamicResource {x:Static SystemParameters.HorizontalScrollBarButtonWidthKey}}"/>
                                            </Grid.ColumnDefinitions>
                                            <Track
                                                Name="PART_Track"
                                                IsEnabled="{TemplateBinding IsMouseOver}">
                                                <Track.DecreaseRepeatButton>
                                                    <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}"
                                                      Command="{x:Static ScrollBar.PageLeftCommand}"/>
                                                </Track.DecreaseRepeatButton>
                                                <Track.IncreaseRepeatButton>
                                                    <RepeatButton Style="{StaticResource HorizontalScrollBarPageButton}"
                                                      Command="{x:Static ScrollBar.PageRightCommand}"/>
                                                </Track.IncreaseRepeatButton>
                                                <Track.Thumb>
                                                    <Thumb x:Name="Thumb" Style="{StaticResource ScrollBarThumb}"
                                                       theme:ScrollChrome.ScrollGlyph="HorizontalGripper"
                                                       Margin="2"/>
                                                </Track.Thumb>
                                            </Track>
                                            <RepeatButton
                                                Style="{StaticResource ScrollBarButton}"
                                                Background="#FFFFFFFF"
                                                Grid.Column="1"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineLeftCommand}"
                                                theme:ScrollChrome.ScrollGlyph="LeftArrow"
                                                RenderTransformOrigin="0.5, 0.5">
                                                <RepeatButton.RenderTransform>
                                                    <ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
                                                </RepeatButton.RenderTransform>
                                            </RepeatButton>
                                            <RepeatButton                           
                                                Style="{StaticResource ScrollBarButton}"
                                                Background="#FFFFFFFF"
                                                Grid.Column="2"
                                                IsEnabled="{TemplateBinding IsMouseOver}"
                                                Command="{x:Static ScrollBar.LineRightCommand}"
                                                theme:ScrollChrome.ScrollGlyph="RightArrow"
                                                RenderTransformOrigin="0.5, 0.5">
                                                <RepeatButton.RenderTransform>
                                                    <ScaleTransform ScaleX="1.5" ScaleY="1.5"/>
                                                </RepeatButton.RenderTransform>
                                            </RepeatButton>
                                        </Grid>
                                    </Border>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </MultiTrigger.Setters>
                </MultiTrigger>
            </Style.Triggers>
        </Style>

Danke schonmal für die Hilfe.

Mfg

5.299 Beiträge seit 2008
vor 13 Jahren

Hi!

Versuchma, den Fehler weiter einzugrenzen. Mir jdfs. sind deine 150 geposteten Zeilen echt zuviel, um die alle durchzugucken.

Der frühe Apfel fängt den Wurm.

S
supaburn Themenstarter:in
17 Beiträge seit 2009
vor 13 Jahren

ohne gestylten ScrollViewer gehts 👅

U
1.688 Beiträge seit 2007
vor 13 Jahren

ohne gestylten ScrollViewer gehts

Dann lass solange Property-Setter weg, bis es geht oder Du ein minimales Beispiel hast.

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo supaburn,

vergleich deinen Style mit den orginal Style des Controls aus dem .NET Framework. Schau dir mal StyleSnooper an. Das sollte helfen.

zero_x

S
supaburn Themenstarter:in
17 Beiträge seit 2009
vor 13 Jahren

Danke schonmal für die Links und Hinweise.
Werde das alles mal durchschauen und nochmal posten 😉