各レコードにはコース オブジェクトと結果オブジェクトの ObservableCollection がある、レコードの ObservableCollection にバインドされたデータグリッドを表示するアプリケーションを構築しています。
コースは、オートコンプリート ボックスを使用して変更されます。結果コレクションは、現在選択されているコースの基準に基づいて楕円テンプレートの色を変更する IValueConverter 実装を含むリストボックスに表示されます。
読み込みにはうまく機能しますが、オートコンプリートによるコース選択へのその後の更新は、値コンバーターの再計算/更新をトリガーしません。
XAML で更新をトリガーする方法はありますか。リストボックスのバインディングに UpdateSource=Property changed を追加したのですが、これでスタックオーバーフローしてしまいました(笑)。
コードは次のとおりです。
<data:DataGrid x:Name="MyDatGrid">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="Results">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ListBox ItemsSource="{Binding ListOfResults}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Ellipse Width="20" Height="20" Fill="{Binding Converter={StaticResource resultToBrushConverter} }" Stroke="Black" StrokeThickness="1" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
<data:DataGridTemplateColumn Header="Course" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Border>
<input:AutoCompleteBox ItemsSource="{Binding Courses, Source={StaticResource coursesSource}}"/>
</Border>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
オートコンプリート ボックスで LostFocus イベントをサブスクライブし、データグリッドに既にあるフィルターをリセットすることができました。しかし、これは非常に非効率的ではありませんか? データグリッドでビューを更新しても、そのメソッドには何の効果もありません。
正しい方向への一歩は大歓迎です。自分がもう灰色になるのを防ごうとしています:)
グリッド内のリストのバインディング式を取得して更新することを考えましたが、手がかりはありませんか?
みんなありがとう