无法在带有扩展器的文本框中单击

can't click in a TextBox with an Expander

TextBox 上添加 Expander 后,我无法点击原来的 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 不可点击:我必须在其中制表...

...而绿色的效果很好

编辑 我试图在扩展器中添加错误的焦点

您的 Expander 位于您的 azure TextBox 之上(它们都位于同一单元格 0,0 中的同一网格中),因此无法单击 azure TextBox。如果您通过将 azure TextBox 放在 Expander 之后来更改它们的 z 顺序,那么 azure TextBox 将变得可点击(但它会阻止绿色 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>

如果 2 个文本框彼此重叠,则它们不能被单击。

为了实现您的目标(在展开器展开时访问一个文本框,在展开器折叠时访问另一个文本框),您可以在展开器展开时折叠 azure 文本框。这是一个如何使用触发器执行此操作的示例(或者为了简单起见,您可以在代码中执行此操作):

<Grid Background="Yellow">
<Expander Name="Expander">      
  <Grid Background="White" >
    <TextBox  Background="LightGreen" Width="150" Height="30"/>
  </Grid>
</Expander>
<TextBox Name="AzureBox" Margin="0,20,0,0"  Background="Azure" Width="150" Height="30">
  <TextBox.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding ElementName=Expander, Path=IsExpanded}" Value="True">
          <Setter Property="TextBox.Visibility" Value="Collapsed"></Setter>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </TextBox.Style>
</TextBox>

折叠时展开器的尺寸似乎有问题:展开一定是由其内部内容引起的。 以下 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>