修复xaml文件中的大小

时间:2013-12-27 13:29:54

标签: c# css .net wpf xaml

我是Wpf应用程序的新手,我有这个界面

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Alg="clr-namespace:AS.Views.DeformableModel"
        xmlns:Controls="clr-namespace:Assergs.Windows.Controls;assembly=Assergs.Windows" x:Class="AS.Window1"
        Title="Window1"   
        >
    <Grid Margin="0,0,2,0">
        <Controls:RibbonPanel Header="Menu" HorizontalAlignment="Left" Margin="0,0,0,31.405" Width="213.388">
            <TreeView Width="210.449" HorizontalAlignment="Left" Margin="0,0,0,-1.515"/>
        </Controls:RibbonPanel>
        <StatusBar Margin="0,472.595,0,0.972" VerticalAlignment="Bottom">
            <Label Content="Pret" Height="41.433" Width="36.737"/>
        </StatusBar>
        <StackPanel Margin="213.388,0,0,31.405">
            <Image Height="473.5" Source="image-interface2.jpg"/>
        </StackPanel>
    </Grid>

</Window>

我得到了结果: result

如您所见,我需要知道许多设计错误:

  1. 如何在完整的堆叠面板空间显示图像?
  2. 为什么RibbonPanel控制器消失了?
  3. 如何根据窗口大小(图片,树视图......)更改我的代码段以使所有控件的大小

2 个答案:

答案 0 :(得分:2)

了解布局容器。 http://www.codeproject.com/Articles/140613/WPF-Tutorial-Layout-Panels-Containers-Layout-Trans

在您的情况下,您可以使用停靠面板作为父面板。 使用网格或边框代替面板。 (我没有测试过这段代码)

<DockPanel Margin="0,0,2,0">
    <Grid DockPanel.Dock="Bottom">
        <Label Content="Pret" Height="41.433"/>
    </Grid>
    <Grid DockPanel.Dock="Left" Width="213">
        <TreeView Width="210.449" HorizontalAlignment="Left"/>
    </Grid>
    <Grid>
        <Image Source="image-interface2.jpg" Stretch="Fill"/>
    </Grid>
</Grid>

答案 1 :(得分:2)

我认为您应该了解wpf的面板和布局。网格是一个出色的面板,您几乎可以获得任何常见的布局。但是为了得到这个,你应该使用列和行(不仅有边距和垂直/水平方向)。堆叠面板不是拉伸图像的最佳控件:如果堆叠面板的方向是垂直的,则项目的高度是项目所需的高度,如果方向是水平的,则项目的宽度是项目所需的宽度,因此,如果您想要拉伸图像,您可以将其分组到内容控件中,或者(如果没有更多控件)不要分组。

我建议您使用dockpanel,Dock面板可以将项目放在顶部,右侧,底部和左侧的位置:

<Window
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:Alg="clr-namespace:AS.Views.DeformableModel"
        xmlns:Controls="clr-namespace:Assergs.Windows.Controls;assembly=Assergs.Windows" x:Class="AS.Window1"
        Title="Window1"   
        >
    <DockPanel Margin="0,0,2,0">
        <Controls:RibbonPanel DockPanel.Dock="Left" Header="Menu" Width="213.388">
            <TreeView /> <!--The tree view will be vertican and horizontally stretch-->
        </Controls:RibbonPanel>
        <StatusBar DockPanel.Dock="Bottom" Height="41.433">               
            <Label Content="Pret"  Width="36.737"/>
        </StatusBar>
        <Image Stretch="UniformToFill" Source="image-interface2.jpg"/> <!--The last item take all aviable space-->
    </DockPanel>

</Window>

希望这会有所帮助......