ListView SelectionChanged не будет обновляться при нажатии вложенного TextBox
У меня есть представление списка с сеткой. Второй столбец gridview содержит текстовые поля (и в случае, если это имеет отношение к данной конкретной проблеме, текстовые поля отображаются с помощью таблицы данных).
Я хочу, чтобы список SelectedItem обновлялся, когда пользователь нажимает в текстовом поле, чтобы напечатать и отразить строку (или элемент списка), содержащую текстовое поле. Прямо сейчас список просмотра SelectedItem будет обновляться только в том случае, если пользователь щелкает строку рядом с текстовым полем. Если я щелкну текстовое поле или введу его, выделенная строка останется прежней, и для представления списка не будет выбрано SelectionChanged.
Как я могу получить выбранный элемент списка просмотра для обновления? Могу ли я форсировать изменение его выбранного элемента или включить просмотр списка, чтобы текстовое поле щелкнуло как-то свое?
Заранее спасибо.
Ps Solution находится здесь:
https://drive.google.com/file/d/0B89vOvsI7UbdTmN5RVdLVTFGeXM/view?usp=sharing
ListView xaml:
<ListView x:Name="CombinedlistView" Grid.Column="0"
DataContext="{Binding ElementName=mainWindow}"
SelectedIndex="{Binding Path=SelectedIndex, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True">
<ListView.View>
<GridView >
<GridViewColumn CellTemplate="{StaticResource labelTemplate}" />
<GridViewColumn CellTemplateSelector="{StaticResource fieldValueTemplateSelector}" />
</GridView>
</ListView.View>
</ListView>
TemplateSelector:
<loc:FieldValueTemplateSelector x:Key="fieldValueTemplateSelector"
StringTemplate="{StaticResource stringTemplate}"
DateTimeTemplate="{StaticResource dateTimeTemplate}"/>
DataTemplate, где находится текстовое поле:
<DataTemplate x:Key="stringTemplate" DataType="{x:Type System:String}">
<StackPanel Style="{StaticResource dataTemplateStackPanelStyle}" Name="stringTemplStack">
<TextBox Name="searchValText" Width="120"
Text="{Binding Path=TextVal, Mode=OneWayToSource}"
DataContext="{Binding ElementName=mainWindow}"/>
</StackPanel>
</DataTemplate>
1 ответ
Попробуйте подключить это событие к вашему PreviewGotKeyboardFocus
событие в вашем списке просмотра:
protected void SelectCurrentItem(object sender, KeyboardFocusChangedEventArgs e)
{
ListViewItem item = (ListViewItem)sender;
item.IsSelected = true;
}