如何修改Silverlight组合框数据显示 [英] How to modify silverlight combobox data display

查看:15
本文介绍了如何修改Silverlight组合框数据显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个组合框,定义如下:

<ComboBox x:Name="cboDept" Grid.Row="0" Margin="8,8,8,8" HorizontalAlignment="Left" VerticalAlignment="Top" Width="120" 
                  ItemsSource="{Binding Source={StaticResource cvsCategories}}">
            <ComboBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Vertical" Width="Auto" Height="Auto">
                        <sdk:Label Content="{Binding CategoryID}" Height="20" />
                        <sdk:Label Content="{Binding CategoryName}" Height="20" />
                    </StackPanel>
                </DataTemplate>
            </ComboBox.ItemTemplate>
        </ComboBox>

它工作得很好。但是,一旦我在列表中选择了一项,我希望将不同的模板应用于向用户显示的组合框中选定的项(弹出窗口消失后显示的项)。在上面的例子中,一旦我选择了相应的项,我只希望CategoryName显示在ComboBox中。

有人能告诉我如何实现这一点吗?

谢谢

推荐答案

您需要做的是自己创建一个包含一些已定义模板的资源字典。在下面的代码中,ComboBoxTemplateOne和ComboBoxTeplateTwo是设置为在庄园中显示组合框的用户控件。

   <UserControl.Resources>
        <ResourceDictionary>
          <DataTemplate x:Key="TemplateOne">
               <local:ComboBoxTemplateOne />
            </DataTemplate>
          <DataTemplate x:Key="TemplateTwo">
               <local:ComboBoxTemplateTwo />
            </DataTemplate>
        </ResourceDictionary>
   </UserControl.Resources>

然后您需要创建自己的类,该类继承自Content Control"DataTemplateSelector",重写OnContent Changed

  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中不存在)执行相同的工作 我知道这里有相当多的步骤,而且相当繁琐,但希望这能让你做到这一点。任何问题都要大声喊出来。

这篇关于如何修改Silverlight组合框数据显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆