1

グリッドビューを使用したリスト ビューがあります。gridview の 2 番目の列にはテキスト ボックスが含まれています (これがこの特定の問題に関連している場合、テキスト ボックスはデータ テンプレートによってレンダリングされます)。

ユーザーがテキストボックスをクリックしてテキストボックスを含む行(またはリストビューアイテム)を入力して反映すると、リストビュー SelectedItem が更新されます。現在、リストビューの SelectedItem は、ユーザーが行をクリックしたときにテキスト ボックスのすぐ外側にある場合にのみ更新されます。テキストボックスをクリックするか入力すると、強調表示された行は同じままで、リストビューに対して SelectionChanged は発生しません。

リストビューの選択項目を更新するにはどうすればよいですか? 選択したアイテムを強制的に変更したり、リストビューを有効にして、テキストボックスのクリックを独自のものとして表示したりできますか?

前もって感謝します。

Ps ソリューションは次の場所にあります。

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>

テンプレートセレクター:

     <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>
4

1 に答える 1