我有一个扩展器和TextBlock
。
它有时会与空间重叠。
我想要扩展器BringToFront。
但WPF中没有这样的属性。
怎么做?
答案 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"/>