Laden...

Was ist hier falsch? (ControlTemplate einer Scrollbar)

Erstellt von CoderboyPB vor 6 Jahren Letzter Beitrag vor 6 Jahren 1.665 Views
Thema geschlossen
C
CoderboyPB Themenstarter:in
327 Beiträge seit 2008
vor 6 Jahren
Was ist hier falsch? (ControlTemplate einer Scrollbar)

Folgendes Beispiel stammt aus dem Buch Pro WPF 4.5 von Andrew McDonald

Ich habe bereits ein paar offensichtliche Fehler korrigiert, aber jetzt bin ich nach rund 2 Stunden mit meinem Latein am Ende:

Warum erzeugt folgender XAML Code, der laut Editor fehlerfrei ist und selbst in der XAML Vorschau angezeigt wird, die Fehlermeldung 'Die Anwendung befindet sich im Haltemodus' ?

Das ist jetzt echt eine Stufe zu hoch für mich, da hoffe ich jetzt auf die UserKompetenz hier im Board.

PS: Die Farben sind Phantasiefarben, also nicht wundern ...


<Application.Resources>
        <SolidColorBrush Color="Blue" x:Key="StandardBrush"></SolidColorBrush>
        <SolidColorBrush Color="Black" x:Key="StandardBorderBrush"></SolidColorBrush>
        <SolidColorBrush Color="Black" x:Key="GlyphBrush"></SolidColorBrush>
        <SolidColorBrush Color="Green" x:Key="PressedBrush"></SolidColorBrush>
        
        <ControlTemplate x:Key="VerticalScrollBar" TargetType="ScrollBar">
            <Grid>
                <Grid.RowDefinitions>
                    <RowDefinition MaxHeight="18"/>
                    <RowDefinition Height="*"/>
                    <RowDefinition MaxHeight="18"/>
                </Grid.RowDefinitions>
                <RepeatButton 
                    Grid.Row="0" 
                    Height="18"      
                    Style="{StaticResource ScrollBarLineButtonStyle}"      
                    Command="ScrollBar.LineUpCommand" >
                    <Path Fill="{StaticResource GlyphBrush}"       
                          Data="M 0 4 L 8 4 L 4 0 Z">
                    </Path>
                </RepeatButton>
                <Track Name="PART_Track" Grid.Row="1" IsDirectionReversed="True" ViewportSize="0">
                    <Track.DecreaseRepeatButton>
                        <RepeatButton Command="ScrollBar.PageUpCommand" Style="{StaticResource ScrollBarPageButtonStyle}"/>
                    </Track.DecreaseRepeatButton>
                    <Track.Thumb>
                        <Thumb Style="{StaticResource ScrollBarThumbStyle}"/>
                    </Track.Thumb>
                    <Track.IncreaseRepeatButton>
                        <RepeatButton Command="ScrollBar.PageDownCommand" Style="{StaticResource ScrollBarPageButtonStyle}"/>
                    </Track.IncreaseRepeatButton>
                </Track>
                <RepeatButton 
                    Grid.Row="3" 
                    Height="18"      
                    Style="{StaticResource ScrollBarLineButtonStyle}"      
                    Command="ScrollBar.LineDownCommand" >
                    <Path Fill="{StaticResource GlyphBrush}"       
                          Data="M 0 0 L 4 4 L 8 0 Z">
                    </Path>
                </RepeatButton>
            </Grid>
        </ControlTemplate>

        <Style TargetType="ScrollBar">
            <Setter Property="SnapsToDevicePixels" Value="True"/>
            <Setter Property="OverridesDefaultStyle" Value="true"/>
            <Style.Triggers>
                <Trigger Property="Orientation" Value="Vertical">
                    <Setter Property="Width" Value="18"/>
                    <Setter Property="Height" Value="Auto" />
                    <Setter Property="Template" Value="{StaticResource VerticalScrollBar}" />
                </Trigger>
            </Style.Triggers>
        </Style>

        <Style x:Key="ScrollBarThumbStyle" TargetType="Thumb">
            <Setter Property="IsTabStop" Value="False"/>
            <Setter Property="Focusable" Value="False"/>
            <Setter Property="Margin" Value="1,0,1,0" />
            <Setter Property="Background" Value="{StaticResource StandardBrush}" />
            <Setter Property="BorderBrush" Value="{StaticResource StandardBorderBrush}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Thumb">
                        <Ellipse Stroke="{StaticResource StandardBorderBrush}"         
                                 Fill="{StaticResource StandardBrush}"/>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="ScrollBarLineButtonStyle" TargetType="RepeatButton">
            <Setter Property="Focusable" Value="False"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="RepeatButton">
                        <Grid Margin="1">
                            <Ellipse 
                                Name="Border" 
                                StrokeThickness="1"           
                                Stroke="{StaticResource StandardBorderBrush}"           
                                Fill="{StaticResource StandardBrush}"/>
                            <ContentPresenter 
                                HorizontalAlignment="Center"           
                                VerticalAlignment="Center"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsPressed" Value="true">
                                <Setter TargetName="Border" Property="Fill" Value="{StaticResource PressedBrush}" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

        <Style x:Key="ScrollBarPageButtonStyle" TargetType="RepeatButton">
            <Setter Property="IsTabStop" Value="False"/>
            <Setter Property="Focusable" Value="False"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="RepeatButton">
                        <Border Background="Transparent" />
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        
    </Application.Resources>

2.079 Beiträge seit 2012
vor 6 Jahren

Reicht ein Thema nicht aus?

Die Anwendung befindet sich im Haltemodus ...

An die Anwendung ist (sehr wahrscheinlich) ein Debugger angehängt, der sich im Haltemodus befindet.
Wenn du nicht derjenige bist, der das debugging initiiert hat, dann häng dich selbst in die Anwendung und schau nach, wer das ist, und wieso.

Der XAML-Code hat damit nichts tun.
Wird die Anwendung angehalten, ist völlig egal, was Du da gebaut hast, sie "befindet sich im Haltemodus".

NuGet Packages im Code auslesen
lock Alternative für async/await

Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.

16.830 Beiträge seit 2008
vor 6 Jahren

Daher auch geschlossen.

Thema geschlossen