一千萬個為什麽

搜索

使用WCF RIA,Entity Framework 4,Silverlight 4的慣用默認排序?

我有兩個Silverlight 4.0 ComboBoxes;第二個顯示在第一個中選擇的實體的子項:



通過WCF RIA服務加載Entity Framework 4.0實體,視圖背後的代碼提供了一種(簡單,hacky)方式來對這些ComboBox進行數據綁定:

public EntitySet<thing> Things { get; private set; }
public Thing SelectedThing { get; private set; }

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    var context = new SortingDomainContext();
    context.Load(context.GetThingsQuery());
    context.Load(context.GetChildThingsQuery());
    Things = context.Things;            
    DataContext = this;
}

private void CmbThingsSelectionChanged(object sender, SelectionChangedEventArgs e)
{
    SelectedThing = (Thing) cmbThings.SelectedItem;
    if (PropertyChanged != null)
    {
        PropertyChanged.Invoke(this, new PropertyChangedEventArgs("SelectedThing"));
    }
}

public event PropertyChangedEventHandler PropertyChanged;

我想要做的是讓兩個組合框按字母順序對其內容進行排序,並且我想在XAML中指定該行為,如果可能的話。

有人可以告訴我使用SL4/EF4/WCF RIA技術堆棧這樣做的慣用方法是什麽?

最佳答案

嘗試使用 CollectionViewSource 並將其綁定到您的組合框。 CollectionViewSource提供排序,分組和過濾。

作為CollectionViewSource的Source,設置EntitySet。可以將CollectionViewSource添加到任何控件的Resources-Section。

 <!--The source can be set in procedural code-->
  
     <!--The name of the property to sort items-->
  


<!--The prefix scm mappes to the System.ComponentModel-->

我沒有測試它,但它應該工作。 CollectionViewSource的Property Source是object類型。不知道該對象是否需要實現指定的接口,例如IEnumerable。

轉載註明原文: 使用WCF RIA,Entity Framework 4,Silverlight 4的慣用默認排序?