我有以下XAML标记,我用它来显示我的C#应用程序的GUI:
<Grid x:Name="templateRoot" ClipToBounds="true" SnapsToDevicePixels="true" KeyboardNavigation.TabNavigation="Local">
<Grid.ColumnDefinitions>
<ColumnDefinition x:Name="ColumnDefinition0"/>
<ColumnDefinition x:Name="ColumnDefinition1" Width="0"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition x:Name="RowDefinition0" Height="Auto"/>
<RowDefinition x:Name="RowDefinition2" Height="0.05*"/>
<RowDefinition x:Name="RowDefinition1" Height="*"/>
</Grid.RowDefinitions>
<TabPanel x:Name="headerPanel" Background="White" Grid.Column="0" IsItemsHost="true" Margin="2,2,2,0" Grid.Row="0" KeyboardNavigation.TabIndex="1" Panel.ZIndex="1" VerticalAlignment="Top"/>
<StackPanel Grid.Row="1" Orientation="Horizontal" FlowDirection="RightToLeft">
</StackPanel>
<StackPanel Grid.Row="1" Orientation="Horizontal" FlowDirection="LeftToRight" Height="30" VerticalAlignment="Top">
<Button Style="{DynamicResource NoChromeButton}" Click="backBtn_Click" Margin="0,0,0,0" HorizontalAlignment="Left" >
<Image Source="C:\...\arrow_left.png" Height="30" Width="40" />
</Button>
<Button Style="{DynamicResource NoChromeButton}" Click="RefreshBtn_Click" Margin="0,0,0,0" HorizontalAlignment="Left" >
<Image Source="C:\...\arrow_loop3.png" Height="30" Width="30" />
</Button>
<Button Style="{DynamicResource NoChromeButton}" Click="referThis" Margin="0,0,0,0" HorizontalAlignment="Left" HorizontalContentAlignment="Left" Height="30" Width="80">
<TextBlock>Refer Patient</TextBlock>
</Button>
</StackPanel>
<Border x:Name="contentPanel" BorderBrush="Green" BorderThickness="5" Background="{TemplateBinding Background}" Grid.Column="0" KeyboardNavigation.DirectionalNavigation="Contained" Grid.Row="2" KeyboardNavigation.TabIndex="2" KeyboardNavigation.TabNavigation="Local">
<ContentPresenter x:Name="PART_SelectedContentHost" ContentSource="SelectedContent" Margin="{TemplateBinding Padding}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</Border>
</Grid>
以上标记嵌套在文件顶部的以下结构中:
<Window x:Class.... >
<Window.Resources>
<Style ...>
...
<Setter Property="Template">
<Setter.value>
<ControlTemplate TargetType="{x:Type TabControl}">
<!--(Above markup goes here) -->
稍后在文件中,我有以下标记:
</ControlTemplate>
</Setter.value>
</Setter>
</Style>
...
</Window.Resources>
<Grid Name = "grid">
<Image x:Name="Connected" Source="...\abc.png" Height="50" Width="50" Margin="750, 0, -5, 640"></Image>
<!-- A few more image tags here -->
<TabControl ... >
<!-- XML for each of the tab items & their content here -->
</TabControl>
</Grid>
</Window>
此XAML显示以下GUI:
从图像中可以看出,页面的“主要内容”与<StackPanel>
重叠,我在其中添加了导航按钮以及我的应用程序的其他功能(返回,刷新等)。
我可以通过拖动其中一个角来调整窗口大小,然后进行调整,以便正确显示按钮和其他功能:
但是,也可以过多地调整窗口大小(即使其太大),这会导致在这些按钮和事物之间显示太多的空白区域,并且还会使最右侧的图像变为移动到与我原定的位置不同的位置:
我的应用程序窗口最右侧的图像是XAML标记在我复制到我的问题中的第三位代码中显示的图像。
所以,我的问题是 - 有没有办法可以“修复”<StackPanel>
,<Grid>
,<Style>
或<TabPanel>
标题的大小我正在显示导航按钮和其他图像,以便当用户拖动窗口的一个角落时,它们不会与窗口的其余部分一起调整大小?
我尝试将Height
的{{1}}属性设置为特定值(例如50),但这导致<TabControl>
的整个内容缩小到50 ...即然后窗口的所有内容都显示在窗口上只有50像素高的区域......
基本上,我希望无论用户如何与应用程序交互,我在此处显示的内容都保持不变,并且只有当用户与应用程序交互时,才会动态更新此处显示的内容。有人有什么建议吗?
答案 0 :(得分:1)
尝试将第1行的高度从0.05 *设置为自动!这应解决重叠问题。