#wpf #textbox #focus #visibility #expander
#wpf #текстовое поле #фокус #видимость #расширитель
Вопрос:
У меня есть текстовый блок, расширитель и текстовое поле…
они находятся внутри заголовка столбца listview.
Текстовый блок предназначен для имени столбца listview при нажатии расширителя…текстовое поле будет отображаться … и пользователь может открыть listview на основе этого столбца. По умолчанию текстовое поле свернуто.
Мое требование заключается в том, что когда пользователь нажимает на расширитель, текстовое поле должно отображаться для пользователя … и фокус должен быть на текстовом поле.
С помощью приведенного ниже XAML я могу отобразить текстовое поле при нажатии расширителя и установить фокус (курсор) на мое текстовое поле. Но этот курсор не мигает. Я имею в виду, что мне нужно снова нажать на текстовое поле, чтобы что-то ввести
Пожалуйста, помогите мне выяснить, в чем проблема…Любая помощь будет оценена.
<StackPanel>
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="ID"/>
<Expander x:Name="IdExp" DockPanel.Dock="Right" IsExpanded="False" ExpandDirection="Down" >
</Expander>
</DockPanel>
<TextBox x:Name="PropertyCCCIDSearch"
Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},
Path=DataContext.SearchCCGId.Value,UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding ElementName=IdExp, Path=IsExpanded, Converter={x:Static local:Converters.BoolToVisibility}}" >
<TextBox.Style>
<Style>
<Style.Triggers> <DataTrigger Binding="{Binding ElementName=IdExp, Path=IsExpanded}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=PropertyCCCIDSearch}"/> </DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
Комментарии:
1. Данный код работает нормально для меня….
Ответ №1:
Ваш код работает правильно, это то, что я пробовал
<Window.Resources>
<BooleanToVisibilityConverter x:Uid="BooleanToVisibilityConverter_1" x:Key="b2v" />
</Window.Resources>
<Grid>
<StackPanel>
<DockPanel>
<TextBlock DockPanel.Dock="Left" Text="ID"/>
<Expander x:Name="IdExp" DockPanel.Dock="Right" IsExpanded="False" ExpandDirection="Down" >
</Expander>
</DockPanel>
<TextBox x:Name="PropertyCCCIDSearch" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type UserControl}},
Path=DataContext.SearchCCGId.Value,UpdateSourceTrigger=PropertyChanged}"
Visibility="{Binding ElementName=IdExp, Path=IsExpanded,
Converter={StaticResource b2v}}" >
<TextBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=IdExp, Path=IsExpanded}" Value="True">
<Setter Property="FocusManager.FocusedElement" Value="{Binding ElementName=PropertyCCCIDSearch}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
</StackPanel>
</Grid>
</Window>
Комментарии:
1. Какие изменения вы внесли, кроме сохранения converter в качестве ресурса?
2. У меня все работает нормально… Не знаю, что произошло на вашем компьютере