2

我正在構建應用程序以顯示綁定到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中的一個過濾器。但是,這不是非常低效? 刷新數據網格上的視圖在該方法中沒有任何影響。

任何正確的方向的步驟非常感謝。試圖阻止我自己去灰色:)

想過在網格中獲取列表的綁定表達式並更新它,但沒有線索?

謝謝你們

回答

1

首先確保記錄對象實現INotifyPropertyChanged和課程屬性調用它。

resultToBrushConverter中的轉換器是否需要訪問綁定對象的多個屬性?如果僅依賴於課程而不是使用Course作爲路徑。

編輯

假設你有到位這些東西你對填充結合應該是這樣的: -

<Ellipse Width="20" Height="20" Fill="{Binding Coarse, Converter={StaticResource resultToBrushConverter} }" Stroke="Black" StrokeThickness="1" /> 

現在,結合知道其監控粗財產應該更新在PropertyChanged事件觸發Coarse屬性時填充。

+0

感謝您的回覆。 Record對象確實實現了InotifyPropertyChanged,並且Course會調用它(已驗證斷點)。 轉換器用於結果的綁定集合。轉換器內部 - 代碼拾取「粗體」並相應地對圓圈進行着色。 不知怎的,我需要更改課程來更新/觸發綁定,以便轉換器被觸發並相應地創建新的顏色。 (轉換器中的一個斷點驗證它在初始加載之後永遠不會被調用)。 課程觸發記錄綁定更新... – 2009-10-15 14:56:35

相關問題