0

I am trying to bind a combobox from a static resource(added on code behind) and add an image beside each item. The best solution I have so far is the following:

            <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>

This is not working, although I can see the image on each item, but instead a text, I got a "Systems.Collection.GenericList". Any ideas how to solve this? Thanks

4

2 回答 2

0

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

因此,您将模板配置为显示图像,默认情况下您的对象组。因此,它显示您的组对象:即您的组的 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>

希望能帮助到你

于 2013-02-15T09:53:26.417 回答
0

当您在数据模板中使用 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>

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

于 2013-02-16T10:39:56.013 回答