将自定义对象的ObservableCollection绑定到ComboBox

时间:2013-05-11 01:49:14

标签: c# wpf xaml combobox datacontext

我在将ObservableCollection绑定到ComboBoxRadComboBox)时遇到了一些问题。我之前使用过几乎相同的代码,但是现在,由于某些原因,它不起作用(ComboBox中没有任何内容出现。)

这是我ComboBox的代码:

<telerik:RadComboBox ItemTemplate="{StaticResource ComboBoxServerPropertiesTemplate}" DataContext="{Binding libpm:Collection.Properties}" ItemsSource="{Binding Name}"/>

DataTemplate看起来像这样:

<DataTemplate x:Key="ComboBoxServerPropertiesTemplate">
    <Grid Margin="0 3">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBlock Grid.ColumnSpan="2" Text="{Binding Name}" />
        <TextBlock Grid.Row="1" Text="Value:" />
        <TextBlock Grid.Row="1" Foreground="#FFA2D0FF" Margin="40,0,0,0" Text="{Binding Value}" />
    </Grid>
</DataTemplate>

Collection()看起来像这样:

public static class Collection
{
    public static ObservableCollection<ServerProperties.Property> Properties { get; set; }
}

ServerPropeties.Property看起来像这样:

public sealed class Property
{
    public string Name { get; set; }
    public string Value { get; set; }    
}

我尝试对"{Binding Path=libpm:Collection.Properties}"DataContext使用ItemSource,我也尝试将"{Binding libpm:Collection.Properties}"用于ItemSource,但它不起作用。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:3)

您似乎已将ItemsSource设置为字符串属性而非集合

尝试将ItemsSource设置为您的收藏集并使用DisplayMemberPathName

中显示ComboBox媒体资源
<telerik:RadComboBox ItemTemplate="{StaticResource ComboBoxServerPropertiesTemplate}" ItemsSource="{Binding libpm:Collection.Properties}" DisplayMemberPath="Name"/>