我有一个带有gridview的列表视图。 gridview第二列包含文本框(如果这与此特定问题相关,则文本框由datatemplate呈现)。
我希望listview SelectedItem在用户单击文本框时更新,以便键入并反映包含文本框的行(或listview项)。现在listview SelectedItem只有在用户点击一行就在文本框之外时才会更新。如果单击文本框或键入文本框,突出显示的行将保持不变,并且列表视图不会发生SelectionChanged。
如何让listview的selecteditem更新?我是否可以强制更改其选定项目或启用列表视图以某种方式看到文本框单击为自己?
提前致谢。
P.S。解决方案位于此处:
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>