我在将ObservableCollection
绑定到ComboBox
(RadComboBox
)时遇到了一些问题。我之前使用过几乎相同的代码,但是现在,由于某些原因,它不起作用(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
,但它不起作用。
任何帮助都将不胜感激。
答案 0 :(得分:3)
您似乎已将ItemsSource
设置为字符串属性而非集合
尝试将ItemsSource
设置为您的收藏集并使用DisplayMemberPath
在Name
ComboBox
媒体资源
<telerik:RadComboBox ItemTemplate="{StaticResource ComboBoxServerPropertiesTemplate}" ItemsSource="{Binding libpm:Collection.Properties}" DisplayMemberPath="Name"/>