カスタムの「ウィザード」コントロールを作成したいと考えています。
そこで、Selector から "Wizard" を派生させ、HeaderedContentControl から派生した "WizardPage" を作成しました。「WizardPages」を「Wizard」のコンテンツ自体に直接追加すると、すべて正常に動作します。
コード内:これは機能します
<ctrl:Wizard>
<ctrl:WizardPage Header="Page 1" Content="Some Stuff" />
</ctrl:Wizard>
それから私は考えました:ねえ、ウィザードのコンテンツにランダムなものを入れて、必要に応じて、ListBoxItems を使用した ListBox のように、その周りにラッパーを作成できれば素晴らしいと思います (WizardPage にはプロパティが必要なので、ラッパーは間違いなく必要です)。 "CanLeavePage" および "AlreadyVisited")。
コード内:これが機能することを望みます(グループは何でもリストであり、WizardPageのどこかにテンプレート化できます)
<ctrl:Wizard ItemsSource="{Binding Groups}" />
だから私は試しました:
protected override bool IsItemItsOwnContainerOverride(object item)
{
return item is WizardPage;
}
protected override DependencyObject GetContainerForItemOverride()
{
return new WizardPage();
}
これら 2 つのメソッドにブレークポイントを設定すると、IsItemItsOwnContainer が呼び出されることがわかりますが、GetContainerForItemOverride は呼び出されません。
ここで何が欠けていますか?
コンセプトは次のようになります。