时间:2010-07-26 14:35:04

标签: silverlight silverlight-4.0

1 个答案:

答案 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中不存在)做同样的工作 我意识到这里有一些公平的步骤而且非常繁琐,但希望这会让你到达那里。任何问题都会大喊大叫。