[WPF] Уменьшение размеров WebBrowser на форме
От: SergDegun Россия  
Дата: 24.12.10 07:14
Оценка:
На 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"]);
    }
  }
}
wpf webbrowser
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.