Измените размер панели медленно, медленно, не внезапно, по событию mouseEnter и mouseLeave. - PullRequest
0 голосов
/ 11 августа 2011

Я пытаюсь медленно, не внезапно изменить размер панели на mouseEnter и событии mouseLeave.

Может кто-нибудь объяснить, как я могу с этим справиться?

Вот мой "код":

   <Border VerticalAlignment="Stretch" Grid.Row="0" 
                Background="{DynamicResource MyBorderBlueGradientBrush}" 
                BorderBrush="Black"  BorderThickness="1,1,1,0">
                            <DockPanel x:Name="pinDockPanel" Width="Auto" Height="Auto" LastChildFill="False"  Margin="0,0,0,0" Background="Transparent">
                                <ToggleButton x:Name="pinButton" VerticalAlignment="Center" Width="auto" MaxWidth="26" Height="26"
                              Background="{DynamicResource MyBorderBlueGradientBrush}" Focusable="False"
                              DockPanel.Dock="Right" Checked="pinButtonChecked" BorderThickness="0" 
                              Unchecked="pinButtonUnchecked" OverridesDefaultStyle="False" BorderBrush="{DynamicResource MyBorderBlueGradientBrush}"  FontFamily="Webdings">
                                    <Label x:Name="Pinback" Background="{DynamicResource MyBorderBlueGradientBrush}" Width="26" Height="26" BorderBrush="{DynamicResource MyBorderBlueGradientBrush}">
                                        <Label x:Name="Pin"  FontSize="18" Foreground="White" Content="?" Width="25" Height="25" Background="Transparent" HorizontalAlignment="Center" VerticalAlignment="Center">
                                            <Label.RenderTransform>
                                                <RotateTransform Angle="16" CenterX="29" CenterY="0"></RotateTransform>
                                            </Label.RenderTransform>
                                        </Label>
                                    </Label>


                                </ToggleButton>

                                <TextBlock VerticalAlignment="Center" FontSize="11"
                           Foreground="White"  FontFamily="Tahoma" Text="Applications" Margin="4,0,0,0"
                                Background="Transparent" 
                           TextWrapping="NoWrap"/>
            </DockPanel>
                        </Border>
                        <Border Name="borderSelectedButton" VerticalAlignment="Stretch" Grid.Row="1" 
                Background="{DynamicResource MyBorderBlueGradientBrush}" 
                BorderBrush="{DynamicResource MyBlueBorderSolidBrush}" 
                BorderThickness="0.5,0.5,0.5,0.5" Margin="1,3,1,0">
                            <DockPanel x:Name="selectedButton" Width="Auto" Height="20" >
                                <TextBlock Name="selectedButtonText" VerticalAlignment="Center" Margin="0,0,0,0" 
                           FontSize="11" Foreground="{DynamicResource MyDarkBlueSolidBrush}" 
                           Text="" TextWrapping="NoWrap" FontFamily="Tahoma"/>
            </DockPanel>
                        </Border>
                        <!-- / LEFT PANEL HEADER ( APPLICATION & SELECTED BUTTON )  -->
                        <!--  RELATED CONTROL SPACE For the Diagnostic Page -->
                        <ScrollViewer Name="scrolviewerRelatedButtons" VerticalScrollBarVisibility="Auto" Grid.Row="2" VerticalAlignment="Stretch" Margin="0,0,0,0" Padding="1,0,0,0">
                            <StackPanel Name="relatedControlStackPanel"
                        Background="White" Height="auto" 
                        ClipToBounds="False" VerticalAlignment="Stretch">

                            </StackPanel>
                        </ScrollViewer>

                        <!--  RELATED CONTROL SPACE For the readerSettingButton Page -->
                        <!-- MAIN BUTTONS  -->
                        <Grid x:Name="gridMainButtons" VerticalAlignment="Stretch" Grid.Row="3" Margin="0,1,0,1" 
                    Background="{DynamicResource MyBlueBackgroundGradientBrush}">
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                            <Button Name="diagnosisButton" Grid.Row="0" Style="{DynamicResource MyBottomLeftButtonStyle}" 
                    Height="auto" Background="White" Margin="0,0,0,0" 
                    BorderBrush="{DynamicResource MyBlueSolidBrush2}" BorderThickness="0,0.2,0,0.2" 
                    HorizontalContentAlignment="Left" Padding="3,1,1,1" Click="Diagnosis_Click">
                                <StackPanel Width="Auto" Height="auto" Orientation="Horizontal">
                                    <TextBlock HorizontalAlignment="Left" Margin="27,7,0,0" VerticalAlignment="Center" 
                               Foreground="{DynamicResource MyBlueSolidBrush2}" FontFamily="Tahoma"
                               TextWrapping="Wrap" FontSize="12">
                                        <Underline>D</Underline>iagnosis
                                    </TextBlock>
                        </StackPanel>
                            </Button>
                            <Button Name="firmwareButton" Grid.Row="1" Style="{DynamicResource MyBottomLeftButtonStyle}" 
                    Height="auto" Background="White" Margin="0,0,0,0" 
                    BorderBrush="{DynamicResource MyBlueSolidBrush2}" BorderThickness="0,0.2,0,0.2" 
                    HorizontalContentAlignment="Left" Padding="3,1,1,1" Width="Auto" 
                    Click="firmwareButtonClick">
                                <StackPanel Width="Auto" Height="auto" Orientation="Horizontal">
                                    <TextBlock HorizontalAlignment="Left" Margin="27,7,0,0" VerticalAlignment="Center" 
                               Foreground="{DynamicResource MyBlueSolidBrush2}" FontFamily="Tahoma"
                               TextWrapping="Wrap" FontSize="12">
                                        <Underline>F</Underline>irmware
                                    </TextBlock>
                        </StackPanel>
                            </Button>
                            <Button Name="readerSettingButton" Grid.Row="2" Style="{DynamicResource MyBottomLeftButtonStyle}" 
                    Height="auto" Background="White" Margin="0,0,0,0" 
                    BorderBrush="{DynamicResource MyBlueSolidBrush2}" BorderThickness="0,0.2,0,0.2" 
                    HorizontalContentAlignment="Left" Padding="3,1,1,1" Width="Auto" 
                    Click="readerSettingButtonClick">
                                <StackPanel Width="Auto" Height="auto" Orientation="Horizontal">
                                    <TextBlock HorizontalAlignment="Left" Margin="27,7,0,0" VerticalAlignment="Center" 
                               Foreground="{DynamicResource MyBlueSolidBrush2}" FontFamily="Tahoma"
                               TextWrapping="Wrap" FontSize="12">
                                        Reader <Underline>S</Underline>ettings
                                    </TextBlock>
                        </StackPanel>
                            </Button>


                        </Grid>
                        <!-- / MAIN BUTTONS  -->
                        <!-- HID LOGO  -->
                        <Border Grid.Row="4" Name="logoPanel" Background="{DynamicResource MyBlueBackgroundGradientBrush}" 
                BorderBrush="{DynamicResource MyBlueBorderSolidBrush}" Margin="0,0,0,0" 
                BorderThickness="0,0,0,0" HorizontalAlignment="Stretch" 
                VerticalAlignment="Stretch" Width="auto" Height="Auto">
                            <!--<StackPanel x:Name="Logo"  Width="auto" Height="32" 
                        Background="{DynamicResource MyBlueBackgroundGradientBrush}" >-->
                            <Image Source="graphics\HID_OMNIKEY.bmp" Height="auto" Width="auto" Name="HID_logo" 
                       Stretch="Uniform" HorizontalAlignment="Center" VerticalAlignment="Stretch" />
                            <!--</StackPanel>--></prev>

c # file

    private void LeftPanelMouseEnter(object sender, MouseEventArgs e)
    {

        private double LeftPanelMaxWidth=240;
        if (resizeFlag == false && pinFlag == false)
        {

                LeftPanel.Width = LeftPanelMaxWidth;
                mySidebarControl.Visibility = Visibility.Visible;
                borderSelectedButton.Visibility = Visibility.Visible;
                scrolviewerRelatedButtons.Visibility = Visibility.Visible;
                gridMainButtons.Visibility = Visibility.Visible;
                logoPanel.Visibility = Visibility.Visible;
                resizeFlag = true;
                pinButton.ToolTip = Properties.Resources.TOOL_TIP_PINUP_BUTTON_UNCHECKED;
                scrolviewerRelatedButtons.Margin = new Thickness(24, 0, 0, 0);
                pinDockPanel.Margin = new Thickness(24, 0, 0, 0);
                selectedButton.Margin = new Thickness(24, 0, 0, 0);
                diagnosisButton.Margin = new Thickness(24, 0, 0, 0);
                firmwareButton.Margin = new Thickness(24, 0, 0, 0);
                readerSettingButton.Margin = new Thickness(24, 0, 0, 0);
                logoPanel.Margin = new Thickness(24, 0, 0, 0);
                mySidebarControl.myNavigationPaneButton.Background = (Brush)FindResource("MySelectedButtonOrangeGradientBrush");
                mySidebarControl.applicationborder.BorderBrush = (Brush)FindResource("MySelectedButtonOrangeGradientBrush");

            }
        }
    }

Ответы [ 2 ]

1 голос
/ 11 августа 2011

Основной принцип:

  1. Создание Style с Trigger на IsMouseOver
  2. Использование Trigger.EnterActions и Trigger.ExitActions до запускают анимации , которые управляют размером вашего элемента управления.

Как вариант, вы можете подключить два EventTriggers (см. Пример в документации) для MouseEnter и MouseLeave.Если вы не заявите о какой-либо конкретной проблеме, это все, что у меня есть для вас.

0 голосов
/ 11 августа 2011

Следующее будет расширять и сворачивать сетку при наведении курсора мыши. Длительность, установленная для анимации, будет увеличивать / уменьшать до 1 секунды.

<Grid.Triggers>
  <EventTrigger RoutedEvent="Grid.MouseEnter">
    <BeginStoryboard>
      <Storyboard>
        <DoubleAnimation Storyboard.TargetName="SomeGrid" Storyboard.TargetProperty="Height" AccelerationRatio="0.5" DecelerationRatio="0.5" From="40.0" To="140.0" Duration="0:0:1" />
      </Storyboard>
    </BeginStoryboard>
  </EventTrigger>
  <EventTrigger RoutedEvent="Grid.MouseLeave">
    <BeginStoryboard>
      <Storyboard>
        <DoubleAnimation Storyboard.TargetName="SomeGrid" Storyboard.TargetProperty="Height" AccelerationRatio="0.5" DecelerationRatio="0.5" From="140.0" To="40.0" Duration="0:0:1" />
      </Storyboard>
    </BeginStoryboard>
  </EventTrigger>
</Grid.Triggers>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...