在Expander
上添加TextBox
后,我无法点击原始TextBox
。
例如
<Grid Background="Yellow" Focusable="False">
<TextBox Margin="0,20,0,0" Background="Azure" Width="150" Height="30"/>
<Expander Focusable="False">
<Grid Background="White" >
<TextBox Background="LightGreen" Width="150" Height="30"/>
</Grid>
</Expander>
</Grid>
上面的azure TextBox不可点击:我必须在其中标签...
......绿色的工作正常
编辑 我试图在扩展器中添加false focusable
答案 0 :(得分:0)
您的扩展器放置在您的天蓝色文本框的顶部(它们都放置在同一单元格0,0中的同一网格上),因此无法单击天蓝色的TextBox。如果您通过在Expander之后放置azure TextBox来更改其z顺序,那么azure TextBox将变为可点击(但它将阻止绿色TextBox可单击):
if ( ? ) { // $index is false } else { // $index is a number (even 0) }
如果将两个文本框放在彼此的顶部,则不能有2个文本框。
为了实现您的目标(在展开扩展器时访问一个TextBox,在展开器折叠时访问另一个TextBox),可以在扩展扩展器时折叠azure TextBox。下面是一个如何使用触发器执行此操作的示例(或者为了简单起见,您可以在代码中执行此操作):
<Grid Background="Yellow" Focusable="False">
<Expander Focusable="False">
<Grid Background="White" >
<TextBox Background="LightGreen" Width="150" Height="30"/>
</Grid>
</Expander>
<TextBox Margin="0,20,0,0" Background="Azure" Width="150" Height="30"/>
</Grid>
答案 1 :(得分:0)
扩展器在折叠时的尺寸看起来像是一个问题:扩展必须由其内部内容引起。 以下xaml按预期工作。
<Grid Background="Yellow" Height="290" Width="290">
<TextBox HorizontalAlignment="Center" VerticalAlignment="Center" Margin="0,0,0,0" Background="Azure" Width="150" Height="30"/>
<Expander ExpandDirection="Down"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="5,0,0,0" >
<Grid Background="White" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Height="290" Width="290">
<TextBox HorizontalAlignment="Center" Margin="0,0,5,45" VerticalAlignment="Center" Background="LightGreen" Width="150" Height="30"/>
</Grid>
</Expander>
</Grid>