我是银光的初学者,所以我希望我能得到一个答案,让我在银光的测量过程中有更多的亮点。
我从silverlight slide control找到了一个令人兴奋的控制 现在我尝试在我的项目中使用它。为了使幻灯片正常工作,我必须将用户控件放在画布上。然后,用户控件自己使用其内容的高度。我只是想改变这种行为,以便将高度设置为父画布的可用空间。
您会看到设置高度的uxBorder。如何测量实际高度并将其设置为边界?
我用Height={Binding ElementName=notificationCanvas, Path=ActualHeight}
尝试过,但是这个依赖属性没有回调,因此永远不会设置actualHeight。
我希望实现的是Jesse Liberty's blog
每个示例的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>
答案 0 :(得分:1)
SlideEffect似乎设置了一个剪辑几何体,这将影响它看起来“大”的样子
RectangleGeometry clipRect = new RectangleGeometry();
clipRect.Rect = new Rect(0, 0, panel.ActualWidth, host.Height);
host.Clip = clipRect;
如果您从幻灯片控件中注释掉上面的行,您应该会看到面板外观的显着变化。
答案 1 :(得分:1)
我认为ActualWidth或ActualHeight属性不能仅设置为gettable。
为此,您将无法使用绑定,可能是在页面加载后创建元素,因为创建时刻的Canvas实际大小将是未知的。
为什么不尝试使用双向绑定为此创建属性,并在layoutUpdated上签名Canvas事件并更新属性的值,因此更新所有相关对象。
我不知道这个事件是否是正确的,通过检查它是否对你有帮助。