如何在其父级中“停靠”画布?
我有一个包含画布的UserControl。
<UserControl x:Class="MyUC"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<MyCanvas x:Name="myCanvas"
Height="???"
Width="???{Binding RelativeSource={RelativeSource TemplatedParent}}" >
</MyCanvas>
</UserControl>
我使用此自定义画布的Width
和Height
属性。并且需要该属性始终“绑定”到父容器。
答案 0 :(得分:5)
试试这个
Width="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType=UserControl,
AncestorLevel=1},
Path=ActualWidth}"
高度相同
答案 1 :(得分:2)
如果您未在Width
中设置Height
和Canvas
属性,则会占用UserControl
中的所有可用空间。这是一个简单的例子:
[MainWindow.xaml]
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1"
Title="MainWindow" Width="500" Height="500"
x:Class="WpfApplication1.MainWindow">
<Grid Background="Blue">
<local:UserControl1 />
</Grid>
</Window>
[UserControl1.xaml]
<UserControl x:Class="WpfApplication1.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Background="Green">
<Canvas Background="Red" />
如果您运行此应用,您会看到背景颜色为红色,这意味着Canvas
占用UserControl
(及其父Grid
提供的所有空间})。您还可以调整窗口大小 - Canvas
将会跟随。
答案 2 :(得分:0)
<MyCanvas x:Name="myCanvas"
Width ="{Binding ElementName=myUserControl, Path=Width}"
Height="{Binding ElementName=myUserControl, Path=Height}">
</MyCanvas>