4


2

ItemTemplate DataTemplateバインディングの問題としてユーザーコントロールを持つWPFリストボックス

簡単なMVVM wpfプロジェクトを作成しました。 基本的なアイデアは、顧客の年間収入と彼がさまざまな銀行で持っているローンに関するデータを表示することです。

モデルは、FinancialとFinancialLoansの2つのクラスで構成されています。 ViewModelは、FinancialVMとFinancialLoanVMの2つのクラスで構成されます

VMクラスは次のとおりです。

namespace WpfTester.ViewModel{
public class FinancialVM
{
    public Model.Financial Financial { get; set; }

    public ObservableCollection FinancialLoanVMs { get; set; }

    public FinancialVM()
    {
        //Fill the models with some sample data
        Financial = new WpfTester.Model.Financial { Income = 1950.12 };
        Financial.FinancialLoans = new ObservableCollection();
        Financial.FinancialLoans.Add(new WpfTester.Model.FinancialLoan { Bank = new Random().Next().ToString() });
        Financial.FinancialLoans.Add(new WpfTester.Model.FinancialLoan { Bank = new Random().Next().ToString() });

        FinancialLoanVMs = new ObservableCollection();

        foreach (Model.FinancialLoan financialLoan in Financial.FinancialLoans)
        {
            FinancialLoanVMs.Add(new ViewModel.FinancialLoanVM { FinancialLoan = financialLoan });
        }
    }    }




public class FinancialLoanVM
{
    public Model.FinancialLoan FinancialLoan { get; set; }

    public FinancialLoanVM()
    { FinancialLoan = new Model.FinancialLoan(); }


}

}

UIには、FinancialVMにバインドされたデータコンテキストを持つFinancial User Ccontrolと、FinancialLoanVMにバインドされたdatacontextを持つFinancialLoan Userコントロールがあります。

問題は顔であり、リストボックスにあります。 FinancialLoansユーザーコントロールをアイテムとして持つようにテンプレート化しましたが、バインドされたデータはFinancialLoanUC DataContextに挿入されません。 トリックはすべてlistboxitem datatemplateの一部にあると思います。 この作業をどのように行うことができるかについてのアイデアはありますか?


1 Answer


4


自分の質問に答えて、何が間違っているのかを見つけました。 FinancialLoanUCはXAMLでこれを持ちました。


FinancialUCから注入されたDataContextを無効にしました。 (起こっていたことは、観察可能なコレクションのFinancialLoanVMメンバーからDataContextが設定され、XAMLで説明されているように新しいクラスインスタンスに置き換えられたためだと思います)

(質問者による)