我正在構建應用程序以顯示綁定到ObservableCollection記錄的數據網格,其中每個記錄都包含一個課程對象和一個ObservableCollection結果對象。Silverlight更新/觸發列表框中的Listal DataTemplate中的IValueConverter
使用自動填充框更改課程。 結果集合顯示在帶有IValueConverter實現的Listbox中,以基於當前所選課程的條件更改橢圓模板的顏色。
它在加載時效果很好,但隨後通過自動完成更新課程選擇不會觸發值轉換器的重新計算/刷新。
有沒有辦法在XAML中觸發刷新。我添加UpdateSource = Property更改爲列表框的綁定 - 但這導致了堆棧溢出(哈哈)。
下面是代碼:
<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,並且Course會調用它(已驗證斷點)。 轉換器用於結果的綁定集合。轉換器內部 - 代碼拾取「粗體」並相應地對圓圈進行着色。 不知怎的,我需要更改課程來更新/觸發綁定,以便轉換器被觸發並相應地創建新的顏色。 (轉換器中的一個斷點驗證它在初始加載之後永遠不會被調用)。 課程觸發記錄綁定更新... – 2009-10-15 14:56:35