silverlight:ScrollViewer的各种高度研究

直接给码:

<UserControl x:Class="SilverlightApplication1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Width="640" Height="300">

    <Grid x:Name="LayoutRoot" Background="LightBlue">
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition Height="Auto" MinHeight="30"></RowDefinition>
        </Grid.RowDefinitions>
        <ScrollViewer Name="sv" VerticalScrollBarVisibility="Visible" LostMouseCapture="sv_LostMouseCapture">
            <Border Background="Azure" BorderBrush="Black" Margin="5" BorderThickness="1" Height="400"></Border>
        </ScrollViewer>
        <StackPanel Grid.Row="1" VerticalAlignment="Center" Orientation="Horizontal" HorizontalAlignment="Center">
            <Button Content="Test" Click="Button_Click" HorizontalAlignment="Center" Padding="10,0"></Button>
            <TextBlock x:Name="tb1" Margin="10,0,0,0"></TextBlock>
        </StackPanel>
    </Grid>
</UserControl>

  cs部分:

using System.Windows;
using System.Windows.Controls;

namespace SilverlightApplication1
{
    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {

            ShowHeight();
        }

        private void sv_LostMouseCapture(object sender, System.Windows.Input.MouseEventArgs e)
        {
            ShowHeight();
        }

        void ShowHeight()
        {
            tb1.Text = string.Format("ActualHeight:{0},VerticalOffset:{1},ViewportHeight:{2},ExtentHeight:{3}", sv.ActualHeight, sv.VerticalOffset, sv.ViewportHeight, sv.ExtentHeight);
        }
    }
}

  运行结果截图:(已经在图上直接加了注释)

注:ExtentHeight只能在LostMouseCapture事件中才能正确获得。

时间: 2024-10-07 10:15:32

silverlight:ScrollViewer的各种高度研究的相关文章

部署Silverlight及Web Servi“.NET研究”ce

一直通过vs测试Silverlight,本以为部署到服务器上是很简单的事. 没想到遇到了很多麻烦,用了整整一天的时间搜索解决方案. 先说部署到xp系统下本地IIS,服务器win2003也一样. 如图,右击虚拟目录->属性->HTTP头->MIME类型.添加 扩展名: .xap MIME类型:application/x-silverlight-app 扩展名: .xaml MIME类型:application/xaml+xml 这样就可以正常显示Silverlight了. 如果你调用了We

Silverlight 游戏开发小“.NET研究”技巧:动感小菜单

网页应用受限于自身的浏览器范畴,不能把华丽效果完全展示,正是因为如此,在网页上诞生了无数绚丽的设计,虽然动感程度和桌面应用无法比拟,但是在UI上却下足了功夫,用户体验可以说无以伦比,比如说小小的菜单,在桌面游戏还停留在四态按钮的时候,网页应用都已经入动感时代了,这次,使用Silverlight实现一个小菜单,体验一下动感吧 当鼠标移入的时候,目标的图标就会放大,形成一个阶梯的效果,要实现这个效果,将需要使用自定义控件和StackPanel的知识. 现在在一个Silverlight工程中添加新控件

Silverlight杂记-本地程“.NET研究”序间的互通

只要使用到两个类一个用来发送一个用来接收.可以有多个发送端,但只能有一个接收端. 来段demo public partial class localcoon : UserControl {       public localcoon() {           InitializeComponent();           //           _sender = new LocalMessageSender("InAction", LocalMessageSender.Glo

Silverlight 游戏开发小“.NET研究”技巧:技能冷却效果(Cooldown)

到目前为止,大家都非常推崇魔兽的技能冷却效果,就是这样的,我记得群里还对这个效果展开过探讨,其实实现起来并不难,关键是思路是否正确,这部分我得谢谢猪笨无罪,是他先想出的解决方案,他不愿意写博客,也就只好我来代劳了,哈哈,后面提供源代码和预览,不要错过. 那么我们开始制作,第一步建立工程,如果你是在自己的项目中应用,直接进入第二步创建图标. 把一张图标文件放进来,这样看起来更加直观,此时将SkillIcon控件的宽和高都设定成64x64,这里非常重要,我设定为64宽高是为了方便展示,你需要依据自己

建立可扩展的silverlight应用框架 step-4

通过外部配置文件加载模块module 在上一节中为项目引入了"Prism"框架,并建立了一个Hello Prism做测试.这里要把项 目好好的整理一下.使其更加的合理和具有可扩展性. 我的目的是,在左侧的导航栏目里点击按钮,相应的右侧的主体部分显示不同的内容.这 些内容都是来自外部加载进来的xap文件.我可以上传管理自己的xap文件. 这里来看一下我的整理过程 首先将布局划分为两个部分:"LeftNavRegion"."MainRegion",一

Silverlight:Mouse Avoiding 躲避鼠标效果

昨晚在一国外博客上(从域名后缀pl上猜想应该是波兰)看到这种效果(Mouse Avoid 躲避鼠标),是基于Flash/AS3开发的,这个示例把弹性运动,摩擦力,均加速运动等多种物理学原理综合运用在一起,产生了不错的交互效果. 在线演示 as3.0代码如下: package { import flash.display.Sprite; import flash.events.Event; import flash.geom.Point; public class MouseAvoider ext

建立可扩展的silverlight 应用框架 step-4

通过外部配置文件加载模块module 在上一节中为项目引入了"Prism"框架,并建立了一个Hello Prism做测试.这里要把项目好好的整理一下.使其更加的合理和具有可扩展性. 我的目的是,在左侧的导航栏目里点击按钮,相应的右侧的主体部分显示不同的内容.这些内容都是来自外部加载进来的xap文件.我可以上传管理自己的xap文件. 这里来看一下我的整理过程 首先将布局划分为两个部分:"LeftNavRegion"."MainRegion",一个来

Silverlight与微软技术:微软抛弃Silverlight了吗?

今年PDC大会上,微软CEO史蒂夫·鲍尔默(Steve Ballmer)将Windows Azure.HTML 5和Windows Phone 7作为开发者平台进行了大力推广,但并没有过多强调Windows应用和Silverlight,这一点令人有些意外,同时也引起了业界的一场小风波,"微软要抛弃Silverlight"等等诸如此类的猜测评论纷纷而来."老赵点滴-追求编程之美"版主赵劼对此发表了一篇博文,来表达他对这场风波的看法.现全文转载于此. 话说,在最近的PD

iFrame/Frame嵌入Silverlight时自适应高度的处理

iFrame如果嵌入的是普通网页,这种场景下的iframe高度自适应解决方案,百度一下随手都能找到一大把. 但是嵌入Silvelight时,嵌入iframe的父页面默认不知道Silverlight内容的真实高度,所以上述办法就不起作用了. 其实只要换个思路:既然父页面不知道iframe中SL的高度,SL难道不能自己主动向父页面汇报自已的高度吗? 先看最终的效果: 注:Page1,Page3均是SL中的UserControl 代码见下面的源代码: 主要步骤为 1.SL在每个页面的Page_Load