【问题标题】:silverlight combobox template bindingsilverlight 组合框模板绑定
【发布时间】:2013-02-15 07:39:05
【问题描述】:

我正在尝试从静态资源绑定一个组合框(添加在后面的代码中)并在每个项目旁边添加一个图像。到目前为止,我最好的解决方案如下:

            <ComboBox x:Name="cmbGroup"
          Width="150" Height="32" ItemsSource="{StaticResource Groups}" >

                <ComboBox.ItemTemplate>

                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Image Source="Question.jpg" Height="30" MouseEnter="Image_MouseEnter" ></Image>
                            <ComboBoxItem Content="{Binding Source={StaticResource Groups}}" Grid.Column="1"/>

                        </Grid>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>

这不起作用,虽然我可以看到每个项目上的图像,而是一个文本,我得到了一个“Systems.Collection.GenericList”。任何想法如何解决这个问题?谢谢

【问题讨论】:

    标签: silverlight combobox


    【解决方案1】:

    当您在数据模板中使用 Binding 控件时,它会绑定到 ItemsSource 集合中的每个项目。此外,如果您只想显示字符串,您可以使用 TextBlock 控件而不是 ComboboxItem。因此,如果您的代码如下所示:

                <ComboBox.ItemTemplate>
    
                    <DataTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Image Source="Question.jpg" Height="30" MouseEnter="Image_MouseEnter" ></Image>
                            <TextBlock Text="{Binding}" Grid.Column="1"/>
    
                        </Grid>
                    </DataTemplate>
                </ComboBox.ItemTemplate>
            </ComboBox>
    

    我想你会达到你想要的效果。 希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我猜你的“组”是一个列表?

      因此,您将模板配置为显示图像,默认情况下您的对象组。 因此它会显示您的组对象:即您的组的 toString(),对于列表来说是“Systems.Collection.GenericList”。

      我的猜测是你绑定了不好的东西?您想绑定列表中的一个项目,该项目应该有一个更合适的 toString() 版本。

      假设您的群组列表中有一些用户项目。因此,您的绑定应如下所示:

        <ComboBox x:Name="cmbGroup"
                Width="150" Height="32" ItemsSource="{StaticResource Groups}" >
      
                      <ComboBox.ItemTemplate>
      
                          <DataTemplate>
                              <Grid>
                                  <Grid.ColumnDefinitions>
                                      <ColumnDefinition/>
                                      <ColumnDefinition/>
                                  </Grid.ColumnDefinitions>
                                  <Image Source="Question.jpg" Height="30" MouseEnter="Image_MouseEnter" ></Image>
                                  <ComboBoxItem Content="{Binding Source={StaticResource Users}}" Grid.Column="1"/>
      
                              </Grid>
                          </DataTemplate>
                      </ComboBox.ItemTemplate>
                  </ComboBox>
      

      希望对你有帮助

      【讨论】:

      • "Groups" 是我想绑定到组合框的项目列表(实际上是字符串)。假设我在“Groups”上有 group1、group2 等。这些是我想在组合中显示的项目
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2011-04-19
      相关资源
      最近更新 更多