none
Уменьшение размеров WebBrowser на форме RRS feed

  • Вопрос

  • На WPF-форме лежат кнопка и под ней WebBrowser. Необходимо, чтобы после щелчка по кнопке у WebBrowser-а верхняя граница плавно съезжала бы вниз на определённое кол-во пикселей. Я сделал так, что в обработчике щелчка по кнопке запускается её анимированное увеличение. Но этот вариант не работает, т. е. кнопка масштабируется, но верхняя граница WebBrowser-а остаётся на месте. Почему?

    XAML

    <Window x:Class="WpfApplication2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
     <Window.Resources>
      <Storyboard x:Key="ScaleBrowserUpToDown" TargetName="BrowserUpDownMover">
       <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
                Duration="0:0:0.6" From="1" To="4" />
      </Storyboard>
      <Storyboard x:Key="ScaleBrowserDownToUp" TargetName="BrowserUpDownMover">
       <DoubleAnimation Storyboard.TargetProperty="RenderTransform.(ScaleTransform.ScaleY)"
                Duration="0:0:0.6" From="4" To="1"/>
      </Storyboard>
     </Window.Resources>
     <Grid>
      <Grid.RowDefinitions>
       <RowDefinition Height="Auto" />
       <RowDefinition Height="1*" />
      </Grid.RowDefinitions>
      <Button Grid.Row="0" Name="BrowserUpDownMover" Height="20" Click="BrowserUpDownMover_Click">
       <Button.RenderTransform>
        <ScaleTransform ScaleX="1" ScaleY="1"/>
       </Button.RenderTransform>
      </Button>
      <WebBrowser Grid.Row="1" Name="ContentViewBrowser" Source="C:\Temp\Error.html">
       <WebBrowser.RenderTransform>
        <ScaleTransform ScaleX="1" ScaleY="1"/>
       </WebBrowser.RenderTransform>
      </WebBrowser>
     </Grid>
    </Window>
     
    

    C#

    using System;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    
    namespace WpfApplication2
    {
     public partial class MainWindow : Window
     {
      public MainWindow()
      {
       InitializeComponent();
    
      }
    
      private void BrowserUpDownMover_Click(object sender, RoutedEventArgs e)
      {
       ScaleTransform trans = BrowserUpDownMover.RenderTransform as ScaleTransform;
       if (trans != null && trans.ScaleY > 1)
        BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserDownToUp"]);
       else
        BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserUpToDown"]);
      }
     }
    }
    
    
    24 декабря 2010 г. 7:48

Ответы

  • <Window x:Class="WpfApplication2.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="MainWindow" Height="350" Width="525">
     <Window.Resources>
     <Storyboard x:Key="ScaleBrowserUpToDown" TargetName="BrowserUpDownMover">
      <DoubleAnimation Storyboard.TargetProperty="Height"
          Duration="0:0:0.6" From="20" To="40" />
     </Storyboard>
     <Storyboard x:Key="ScaleBrowserDownToUp" TargetName="BrowserUpDownMover">
      <DoubleAnimation Storyboard.TargetProperty="Height"
          Duration="0:0:0.6" From="40" To="20"/>
     </Storyboard>
     </Window.Resources>
     <Grid>
     <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="1*" />
     </Grid.RowDefinitions>
     <Button Grid.Row="0" Name="BrowserUpDownMover" Height="20" Click="BrowserUpDownMover_Click">
     </Button>
     <WebBrowser Grid.Row="1" Name="ContentViewBrowser" Source="C:\Temp\Error.html">
     </WebBrowser>
      </Grid>
    </Window>
    


    using System;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    
    namespace WpfApplication2
    {
      public partial class MainWindow : Window
      {
        public MainWindow()
        {
          InitializeComponent();
    
        }
    
        private void BrowserUpDownMover_Click(object sender, RoutedEventArgs e)
        {
          if (BrowserUpDownMover.Height > 20)
            BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserDownToUp"]);
          else
            BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserUpToDown"]);
        }
      }
    }
    

    • Помечено в качестве ответа Abolmasov Dmitry 24 декабря 2010 г. 11:51
    24 декабря 2010 г. 10:42

Все ответы

  • <Window x:Class="WpfApplication2.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="MainWindow" Height="350" Width="525">
     <Window.Resources>
     <Storyboard x:Key="ScaleBrowserUpToDown" TargetName="BrowserUpDownMover">
      <DoubleAnimation Storyboard.TargetProperty="Height"
          Duration="0:0:0.6" From="20" To="40" />
     </Storyboard>
     <Storyboard x:Key="ScaleBrowserDownToUp" TargetName="BrowserUpDownMover">
      <DoubleAnimation Storyboard.TargetProperty="Height"
          Duration="0:0:0.6" From="40" To="20"/>
     </Storyboard>
     </Window.Resources>
     <Grid>
     <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="1*" />
     </Grid.RowDefinitions>
     <Button Grid.Row="0" Name="BrowserUpDownMover" Height="20" Click="BrowserUpDownMover_Click">
     </Button>
     <WebBrowser Grid.Row="1" Name="ContentViewBrowser" Source="C:\Temp\Error.html">
     </WebBrowser>
      </Grid>
    </Window>
    


    using System;
    using System.Windows;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    
    namespace WpfApplication2
    {
      public partial class MainWindow : Window
      {
        public MainWindow()
        {
          InitializeComponent();
    
        }
    
        private void BrowserUpDownMover_Click(object sender, RoutedEventArgs e)
        {
          if (BrowserUpDownMover.Height > 20)
            BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserDownToUp"]);
          else
            BrowserUpDownMover.BeginStoryboard((Storyboard)this.Resources["ScaleBrowserUpToDown"]);
        }
      }
    }
    

    • Помечено в качестве ответа Abolmasov Dmitry 24 декабря 2010 г. 11:51
    24 декабря 2010 г. 10:42
  • Большое спасибо.

     

    24 декабря 2010 г. 11:26