3


0

私が取り組んでいるコードは、WPFアプリケーションの一部であり、ユーザーが操作できる一連のトランプのスタックを表示する必要があります。 だから私は一緒に働いている3つのUserControlsがあります:

  • メインコントロール

  • CardStackControl

  • カード制御

MainControl.xamlの場合:


私のデータテンプレートはResources.xamlファイルで定義されています。


CardStackControl.xaml:


CardControl.xaml:


MainViewModel:

公開ObservableCollectionカードスタック。

// ...

CardStackViewModel:

パブリッククラスCardStackViewModel {プライベートCardStackモデル;

パブリック文字列CardName {get {return this.Model.CardType.Name; }}

public int Count {get {return this.Model.Cards.Count; }}

ObservableCollection公開カード{get;プライベートセット}

// ...

CardViewModel:

/// ///カードタイプへの参照。 ///プライベートカードモデル

/// ///カードの名前を取得します。 /// public string Name {get {return this.Model.CardType.Name;}; }}

パブリック文字列Caption {get {return this.Model.CardType.Text; }}

// ...

MainViewModel、CardStackViewModelコンストラクターでは、両方のObservableCollectionインスタンスが初期化され、データが取り込まれ、テストデータが入力されます。

アプリケーションをロードしてMainViewModelを作成しても、UserControlが表示されず、テストデータも表示されません。 私は このチュートリアルをガイドとして使用しているので、MainViewModelはそのウィンドウのタブ付きコントロールの "Workspaces" ViewModelに対応しています。 確かに、この例では各コントロールを水平に配置する必要がありますが、今のところ問題ありません - 私はまだWPFを学んでいます。

明らかに、私は.xamlファイルや他の足場コードのコード生成タグを省略しました(これらの例から明らかでない場合、私はこれを修正してそのコードをポストすることができます)。 私は今のところModelクラスの文字列プロパティをテスト/バインドするだけです。

2 Answer


5


ItemsPanelTemplate`の宣言方法は正しくありません。 ItemsControl`の項目として宣言しているのです。 あなたはそれをそのようにするべきです:



2


MainControl.xamlのItemsControlはItemTemplateを指定していません。 追加:

ItemTemplate =" {StaticResource MainTemplate} "

また、ユーザーコントロールにDataContextを伝播する必要もあると思います。


(他のデータテンプレートの他のユーザーコントロールも同様)。