Я создаю приложение для отображения привязки данных, привязанного к ObservableCollection Records, где каждая запись имеет объект курса и объект ObservableCollection объектов результатов.Обновление Silverlight/Trigger IValueConverter в Listbox DataTemplate в DataGrid
Курс изменен с использованием блока автозаполнения. Коллекция результатов отображается в Listbox с реализацией IValueConverter для изменения цвета шаблона эллипса на основе критериев выбранного курса.
Он отлично работает при загрузке, но последующие обновления выбора курса с помощью автозаполнения не вызывают пересчет/обновление преобразователя значений.
Есть ли способ вызвать обновление в XAML. Я добавил UpdateSource = Свойство, измененное на привязку списка, но это вызвало переполнение стека (ха-ха).
Вот код:
<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 события на поле автозаполнения и сбросить фильтр, который у меня уже есть на сетке. Но разве это неэффективно? Обновление вида на datagrid не влияет на этот метод.
Любые шаги в правильном направлении приветствуются. Пытаясь помешать себе больше серым :)
Были ли у вас мысли о получении выражения привязки списка в сетке и его обновлении, но нет подсказки?
Спасибо, ребята
Спасибо за ответ. Объект Record реализует InotifyPropertyChanged, и курс вызывает его (проверяется точка останова). Преобразователь используется в связанной коллекции результатов. Внутренний преобразователь - код захватывает грубый и соответственно окрашивает круги. Как-то мне нужно изменить курс, чтобы обновить/вызвать привязку, чтобы конвертер был запущен и соответственно создал новые цвета. (Точка прерывания в конвертере проверяет, что она никогда не вызывается после начальной загрузки). Что-то, что влияет на триггеры курса Запись привязки обновления ... –