无法使用扩展器单击TextBox

时间:2016-04-18 11:36:21

标签: c# xaml expander

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不可点击:我必须在其中标签...

enter image description here

......绿色的工作正常

enter image description here

编辑 我试图在扩展器中添加false focusable

2 个答案:

答案 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>