我想创建一个自定义的“向导”-控件。
所以我从 Selector 派生了一个“Wizard”,并创建了一个从 HeaderedContentControl 派生的“WizardPage”。当我将“WizardPages”直接添加到“Wizard”的内容本身时,一切正常。
在代码中:这有效
<ctrl:Wizard>
<ctrl:WizardPage Header="Page 1" Content="Some Stuff" />
</ctrl:Wizard>
然后我想:嘿,如果你可以在向导的内容中放入随机的东西,如果需要的话,他会在它周围创建一个包装器,就像 ListBox 和 ListBoxItems 一样(我肯定需要一个包装器,因为 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();
}
当我在这两个方法上设置断点时,我可以看到 IsItemItsOwnContainer 被调用,但 GetContainerForItemOverride 永远不会被调用。
我在这里想念什么?
这个概念看起来像这样: