答案 0 :(得分:0)
您需要做的是创建一个包含一些已定义模板的ResourceDictionary。在下面,ComboBoxTemplateOne和ComboBoxTeplateTwo是用户控件,用于在您想要的庄园中显示组合框。
<UserControl.Resources>
<ResourceDictionary>
<DataTemplate x:Key="TemplateOne">
<local:ComboBoxTemplateOne />
</DataTemplate>
<DataTemplate x:Key="TemplateTwo">
<local:ComboBoxTemplateTwo />
</DataTemplate>
</ResourceDictionary>
</UserControl.Resources>
然后,您需要创建自己的类,该类继承自ContentControl“DataTemplateSelector”,覆盖OnContentChanged
Protected Overrides Sub OnContentChanged(ByVal oldContent As Object, ByVal newContent As Object)
MyBase.OnContentChanged(oldContent, newContent)
Me.ContentTemplate = SelectTemplate(newContent, Me)
End Sub
然后,您需要创建另一个继承自上述DataTemplateSelector的类,该类重写SelectTemplate(“TemplateSelectorClass”),它将返回上面定义的DataTemplate(“TemplateOne”或“TemplateTwo”)。 同样在这个派生类中,您需要为每个模板定义一个属性
Public Property ComboboxTemplateOne As DataTemplate
然后回到你的XAML和吹XAML
<local:TemplateSelectorClass ComboboxTemplateOne="{StaticResource TemplateOne}" Content="{Binding Path=ActiveWorkspace}>
这应该有效,因为它实际上与在WPF中设置“DataTemplate”属性(在SilverLight中不存在)做同样的工作 我意识到这里有一些公平的步骤而且非常繁琐,但希望这会让你到达那里。任何问题都会大喊大叫。