У меня есть ListBox, который заполняется из коллекции ViewModels, которая использует редактирование на месте, что я делаю, имея пару стилей, которые я могу применить к частям DataTemplate, которые делают их видимыми / свернутыми по мере необходимости. Это выглядит примерно так:
<Style
x:Key="UnselectedVisibleStyle"
TargetType="{x:Type FrameworkElement}">
<Setter
Property="Visibility"
Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource boolToVis}, ConverterParameter=False}" />
</Style>
<Style
x:Key="SelectedVisibleStyle"
TargetType="{x:Type FrameworkElement}">
<Setter
Property="Visibility"
Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}, Converter={StaticResource boolToVis}, ConverterParameter=True}" />
</Style>
С моим ListBox, имеющим ItemTemplate, заданный что-то вроде:
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<TextBlock
Text="{Binding Name}"
Style="{StaticResource UnselectedVisibleStyle}" />
<TextBox
x:Name="textBox"
Text="{Binding Name}"
Style="{StaticResource SelectedVisibleStyle}" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
Это прекрасно работает, но в идеале я хочу, чтобы TextBox автоматически выбирался, когда пользователь щелкает элемент, в идеале - в общем, обычным способом, который я могу использовать в своем проекте, и без лишних проблем в моем коде.
Спасибо,
DM.