代码之家  ›  专栏  ›  技术社区  ›  Edward Tanguay

如何在WPF中将Canvas合并到更大的布局中?

  •  1
  • Edward Tanguay  · 技术社区  · 16 年前

    当你试图将画布构建到布局中,并在侧面设置控件,而画布是绘图区域时,画布似乎与其他元素不能很好地结合在一起。

    <Window x:Class="WpfApplication25.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <StackPanel>
    
            <TextBlock DockPanel.Dock="Bottom" Text="Move the slider to reveal the answer:"/>
            <Slider DockPanel.Dock="Bottom" Name="theSlider" 
                HorizontalAlignment="Left" 
                Width="200" 
                Minimum="0" 
                Maximum="1" 
                Value="1" 
                Cursor="Hand"/>
    
            <Border BorderBrush="Tan" BorderThickness="2">
                <Canvas>
                    <TextBlock Canvas.Left="45" Canvas.Top="50" Text="test" FontSize="16"/>
                    <Rectangle 
                        Canvas.Left="10" 
                        Canvas.Top="10" 
                        Width="100" 
                        Height="100" 
                        Fill="Silver" 
                        Opacity="{Binding ElementName=theSlider, Path=Value}"
                        />
                </Canvas>
            </Border>
        </StackPanel>
    </Window>
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   user7116    16 年前

    从XamlPad中可以看出,问题似乎是Canvas没有明确的高度/宽度,其HorizontalAlignment默认位于Border的中间。如果没有明确的高度和宽度,边框似乎会折叠到0高度并在宽度上拉伸。我的假设是,这是因为您的边框位于StackPanel中,因为将边框放置在网格中会使其按预期运行。

        2
  •  0
  •   Alan Mendelevich    16 年前

    据我所知,你想实现什么,你应该把你的控件放在网格的一个单元格里,把画布放在另一个单元格中。