如何测量具有自动高度和宽度的画布

Wym*_*roo 6 silverlight xaml canvas

我是银光的初学者,所以我希望我能得到一个答案,让我在银光的测量过程中有更多的亮点.

我从silverlight幻灯片控件中找到了一个令人兴奋的襟翼控制 ,现在我尝试在我的项目中使用它.为了使幻灯片正常工作,我必须将用户控件放在画布上.然后,用户控件自己使用其内容的高度.我只是想改变这种行为,以便将高度设置为父画布的可用空间.

您会看到设置高度的uxBorder.如何测量实际高度并将其设置为边框?

我尝试了Height={Binding ElementName=notificationCanvas, Path=ActualHeight}但是这个依赖属性没有回调,因此从未设置actualHeight.

我想要实现的是像Jesse Liberty博客上每个例子的tweetboard这样的用户控件

对不起我的英文写作,我希望你理解我的问题.

<Canvas x:Name="notificationCanvas" Background="Red">
            <SlideEffectEx:SimpleSlideControl GripWidth="20" GripTitle="Task"  GripHeight="100">
                <Border x:Name="uxBorder"
                  BorderThickness="2"
                  CornerRadius="5"
                  BorderBrush="DarkGray"
                  Background="DarkGray"
                  Padding="5" Width="300"
                  Height="700"
                  >
                    <StackPanel>
                        <TextBlock Text="Tasks"></TextBlock>
                        <Button x:Name="btn1" Margin="5" Content="{Binding ElementName=MainBorder, Path=Height}"></Button>
                        <Button x:Name="btn2" Margin="5" Content="Second Button"></Button>
                        <Button x:Name="btn3" Margin="5" Content="Third Button"></Button>
                        <Button x:Name="btn1_Copy" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy1" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy2" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy3" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy4" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy5" Margin="5" Content="First Button"/>
                        <Button x:Name="btn1_Copy6" Margin="5" Content="First Button"/>
                    </StackPanel>
                </Border>
            </SlideEffectEx:SimpleSlideControl>
Run Code Online (Sandbox Code Playgroud)

Jer*_*all 1

嘿 - 有几件事:

  • 我猜这只是一个拼写错误,但是:“{Binding ElementName=MainBorder,Path=Height}”应该是“{Binding ElementName=uxBorder,Path=Height}”(或ActualHeight)
  • SlideEffect 似乎设置了剪辑几何形状,这将影响它看起来有多大“大”

    RectangleGeometry clipRect = new RectangleGeometry();

    clipRect.Rect = new Rect(0, 0, panel.ActualWidth, host.Height);

    host.Clip = clipRect;

如果您从滑动控件中注释掉上述几行,您应该会看到面板看起来有明显的变化。