在WPF中带来前面(属性)等价物

时间:2010-09-28 10:31:58

标签: c# wpf

我有一个扩展器和TextBlock。 它有时会与空间重叠。 我想要扩展器BringToFront。 但WPF中没有这样的属性。 怎么做?

3 个答案:

答案 0 :(得分:0)

您似乎正在使用Canvas面板来定位Expander和TextBlock。

首先:不要使用Canvas,它是旧式的,不够灵活。使用其他面板之一(即网格)来布局控件。然后问题就不复存在了。

如果您必须使用Canvas并且想要防止重叠,则可以使用Panel.ZOrder附加属性。您还应该将Expander的Background属性设置为像“White”这样不透明的东西。默认情况下,Background属性具有null值,这意味着透明。

答案 1 :(得分:0)

如果问题是设计时问题:

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

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

TextBlock“Two”将显示在“One”前面,因为它在XAML中是最后一个。

如果这是一个运行时问题,bochja就可以使用Panel.ZOrder了。

答案 2 :(得分:0)

使用Grid可能最简单,因此元素顺序无关紧要。

例如:

<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"/>