0

2つのコンボボックスを含むユーザーコントロールがあり、ユーザーは在庫カテゴリを選択してから在庫アイテムを選択できます。在庫カテゴリコンボボックスの選択された値は、在庫アイテムコンボボックスリストをトリガーします。私が抱えている問題は、在庫アイテムのコンボリストを並べ替えることができないことです。インベントリカテゴリとインベントリアイテムの組み合わせをDataContextに追加すると、インベントリカテゴリを並べ替えることはできますが、インベントリアイテムリストを並べ替えることはできません。コードは次のようになります。

Xaml:

<ComboBox Style="{DynamicResource ResourceKey=ComboBoxStyle}"
          Name="cboInventoryCategory"
          MinWidth="250"
          HorizontalAlignment="Stretch"
          ItemsSource="{Binding DataContext.InventoryCategoryList, RelativeSource={RelativeSource AncestorType=UserControl,Mode=FindAncestor}}"
          DisplayMemberPath="Category"
          SelectedValuePath="Id"
          SelectionChanged="cboInventoryCategory_SelectionChanged" />

<ComboBox Style="{DynamicResource ResourceKey=ComboBoxStyle}"
          Name="cboInventoryItem"
          MinWidth="250"
          HorizontalAlignment="Stretch"
          ItemsSource="{Binding ElementName=cboInventoryCategory,Path=SelectedItem.InventoryLists}"
          SelectedValue="{Binding Inventory_Id, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          DisplayMemberPath="InventoryDescription"
          SelectedValuePath="InventoryId"
          SelectionChanged="cboRequestFor_SelectionChanged" />

Xaml.CS:

public Inventory()
{
    Initialize();

    var db = new DataContext();
    var viewModel = new ViewModel();

    DataContext = viewModel;
}

モデルの表示:

using System.Linq;
using System.Data.Linq;

public IEnumerable<InventoryCategory> InventoryCategoryList { get; set; }
//InventoryCategory is a table
//InventoryList is a view and has a primary key and an association in the dbml

public ViewModel()
{
    InventoryCategoryList_Refresh()
}

public void InventoryCategoryList_Refresh()
{

     var dataOptions = new DataLoadOptions();
     dataOptions.LoadWith<InventoryCategory>(ic => ic.InventoryLists);
     db.LoadOptions = dataOptions;

     InventoryCategoryList = db.InventoryCategories.Where(w => w.Active == true).OrderBy(o => o.Category);
}
4

2 に答える 2

0

.LoadWith<> の代わりに .AssociateWith<> を使用する必要があります

var dataOptions = new DataLoadOptions();
dataOptions.AssociateWith<InventoryCategory>(ic => ic.InventoryLists.OrderBy(o => o.InventoryDescription));
db.LoadOptions = dataOptions;
于 2013-02-10T01:02:07.457 に答える
0

これを試して:

public void InventoryCategoryList_Refresh()
{

     var dataOptions = new DataLoadOptions();
     dataOptions.LoadWith<InventoryCategory>(ic => ic.InventoryLists);
     db.LoadOptions = dataOptions;

     InventoryCategoryList = db.InventoryCategories.Where(w => w.Active == true).OrderBy(o => o.Category).ThenBy(c=>c.InventoryItems);
}
于 2013-01-30T19:57:05.733 に答える