C# 将WPF中的等效物放在前面(属性)

C# 将WPF中的等效物放在前面(属性),c#,wpf,C#,Wpf,我有一个扩展器和TextBlock。 它有时在空间上重叠。 我想要一个膨胀机。 但WPF中没有这样的属性。 如何操作?似乎您正在使用画布面板定位扩展器和文本块 首先:不要使用画布,它很旧,不够灵活。使用其他面板之一(即网格)来布局控件。那么问题就应该解决了 如果必须使用画布并且希望防止重叠,则可以使用Panel.ZOrder attached属性。您还应该将扩展器的背景属性设置为不透明,如“白色”。默认情况下,后台属性具有null值,这意味着透明。如果问题是设计时问题: WPF将把XAML中的最

我有一个扩展器和
TextBlock
。 它有时在空间上重叠。 我想要一个膨胀机。 但WPF中没有这样的属性。
如何操作?

似乎您正在使用画布面板定位扩展器和文本块

首先:不要使用画布,它很旧,不够灵活。使用其他面板之一(即网格)来布局控件。那么问题就应该解决了


如果必须使用画布并且希望防止重叠,则可以使用Panel.ZOrder attached属性。您还应该将扩展器的背景属性设置为不透明,如“白色”。默认情况下,后台属性具有null值,这意味着透明。

如果问题是设计时问题:

WPF将把XAML中的最后一项放在顶部。例如,如果我有这个:

<TextBlock Text="one"/>
<TextBlock Text="Two"/>

文本块“2”将显示在“1”前面,因为它是XAML中的最后一个


如果是运行时问题,bochja将其放在Panel.ZOrder的最上面。

使用网格可能是最简单的,因此元素顺序无关紧要

例如:


<Grid DataContext="{Binding CurrentRequest,ElementName=root}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="100" />
        <ColumnDefinition Width="50"/>
    </Grid.ColumnDefinitions>

    <Label Grid.Row="0" Grid.Column="0" Content="These labels"/>
    <Label Grid.Row="0" Grid.Column="0" Content="Will overlap"/>

    <Label Grid.Row="1" Grid.Column="0" Content="Next row"/>