我在WPF 4.5中有一个画布,想要用UserControl覆盖它,它主要由
组成带有标签和半透明矩形作为背景的网格:
<UserControl x:Class="Cwss.Tactical.Navigation.ObjectInfoView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="clr-namespace:Cwss.Utils.Converter"
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">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Tactical/Styles/CommonStyle.xaml"></ResourceDictionary>
<ResourceDictionary>
<Style x:Key="AttrName"
TargetType="{x:Type Label}">
<Setter Property="Foreground"
Value="White" />
<Setter Property="FontSize"
Value="14"></Setter>
</Style>
<Style x:Key="AttrValue"
TargetType="{x:Type Label}">
<Setter Property="Foreground"
Value="Yellow" />
<Setter Property="FontSize"
Value="14"></Setter>
</Style>
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
<Grid Width="300"
Height="200">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Rectangle Panel.ZIndex="-1"
Opacity=".5"
Width="300"
Height="200"
Fill="Blue"
Stroke="Blue"
StrokeThickness="2"
RadiusX="8"
RadiusY="8">
</Rectangle>
<Label Style="{StaticResource AttrName}"
Grid.Column="0"
Content="Class"></Label>
<Label Style="{StaticResource AttrValue}"
Grid.Column="1"
Name="ObjectKnowledge_Clas"
Content="Hi"></Label>
<Label Style="{StaticResource AttrName}"
Grid.Column="0"
Grid.Row="1"
Content="Range"></Label>
<Label Style="{StaticResource AttrValue}"
Grid.Column="1"
Grid.Row="1"
Content="{Binding ObjectKnowledge.Range, Converter={u:RangetoStringConverter}}"></Label>
</Grid>
</UserControl>
对我来说奇怪的是,第一个标签会在矩形,
上呈现但所有其他标签都没有。谢谢你让我知道我在这里做错了什么!
答案 0 :(得分:6)
你的Rectangle
被渲染为网格中的第一个元素Row=0
和Column=0
(网格假定为默认值)
将矩形切换为:
<Rectangle Grid.RowSpan="4"
Grid.ColumnSpan="2"
Width="300"
Height="200"
Panel.ZIndex="-1"
Fill="Blue"
Opacity=".5"
RadiusX="8"
RadiusY="8"
Stroke="Blue"
StrokeThickness="2" />
现在你看到了其他标签。
您应该使用Snoop,这可能会突出显示您的问题