1

エキスパンダーとテキストボックスがあります。デフォルトでは、テキストボックスは非表示になっています。ユーザーがエキスパンダーをクリックすると、テキスト ボックスが表示されます。これはうまくいっています。

私が必要とするのは、ユーザーがエキスパンダーをクリックしたときです...テキストボックスにフォーカスを設定する必要があります。

これを行うのを手伝ってください...次のコードで試しました...しかし、「IsFocused」は読み取り専用プロパティのようです。

どんな助けでも大歓迎です!

<StackPanel>
  <DockPanel>
    <TextBlock DockPanel.Dock="Left"  Text="ID"/>
      <Expander x:Name="ID" DockPanel.Dock="Right" IsExpanded="False" ExpandDirection="Down">                                                    
      </Expander>
  </DockPanel>
  <TextBox Text="{Binding Path=SearchCCCId.Value,UpdateSourceTrigger=PropertyChanged}" 
     Visibility="{Binding ElementName=ID,Path=IsExpanded,Converter={x:Static local:Converters.BoolToVisibility}}"  Width="70" >
   <TextBox.Style>
     <Style>
        <Style.Triggers>
           <DataTrigger Binding="{Binding ElementName=ID, Path=IsEpanded}" Value="True" >
              <Setter Property="IsFocused" Value="True" />
           </DataTrigger>
         </Style.Triggers>
     </Style>
    </TextBox.Style>
   </TextBox>
</StackPanel>
4

3 に答える 3

1

皆様のご協力により、答えを見つけることができました...

<TextBox.Style>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding ElementName=ID, Path=IsExpanded}" Value="True">
                <Setter Property="FocusManager.FocusedElement" 
                        Value="{Binding ElementName=PropertyIDSearch}"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</TextBox.Style>
于 2011-10-15T14:48:52.837 に答える
0

Expander のExpandedイベントを処理し、ハンドラー メソッド内でフォーカスを設定できます。

private void OnExpanderExpanded(object sender, RoutedEventArgs args)
{
    txtTest.Focus();
}
于 2011-10-15T05:28:25.257 に答える
0

IsFocused は ReadOnly プロパティです。あなたはこれらを見たいと思うかもしれません -

MVVMを使用してテキストボックスにフォーカスを設定するには?

WPF - ボタンがクリックされたときにフォーカスを設定する - コードビハインドなし

于 2011-10-15T05:30:28.493 に答える