如何在 MVVM Light 的 ListView 中的 ComboBox 中显示列表?
How to show a List in a ComboBox in a ListView in MVVM Light?
我有一个对象,它有一些属性,例如名称、日期,然后是 属性 列表标签。 属性 是标签列表。我想显示一个带有名称的 ListView,然后是一个带有该标签列表中所有名称的 ComboBox。
像这样:
<ListView Grid.Row="3"
Margin="10,0,10,0"
ItemsSource="{Binding ObjectList}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"
Foreground="Black" />
<ComboBox ItemsSource="{Binding Tags}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这是我在 ViewModel 上的 ObservableCollection:
private ObservableCollection<MyObject> _ObjectList = new ObservableCollection<MyObject>();
public ObservableCollection<MyObject> ObjectList
{
get
{
return _ObjectList;
}
set
{
_ObjectList = value;
RaisePropertyChanged("ObjectList");
}
}
如何将这些名称放入 ListView 的 ComboBox 中?在那个 ComboBox 中,我看到 App1.Model.Object 5 次!里面有5个项目,但我想显示名称。
您必须定义 属性 应该使用什么来命名组合框中的元素。您可以使用 属性 DisplayMemberPath
执行此操作。在此示例中,TagName
是包含项目名称的 属性Name。
<ComboBox ItemsSource="{Binding Tags}" DisplayMemberPath="TagName" />
这很正常,因为您的 Tag
是一个对象,您必须定义要显示的 属性 `
这是一个例子:
public class Tag
{
public string Property1 {get; set;}
public string Property2 {get; set;}
public string Description {get; set;}
}
现在,在您的 XAML 中,您将通过添加 :
来绑定此 属性
<ComboBox ItemsSource="{Binding Tags}", DisplayMemberPath=Description, Mode=Default/>
我有一个对象,它有一些属性,例如名称、日期,然后是 属性 列表标签。 属性 是标签列表。我想显示一个带有名称的 ListView,然后是一个带有该标签列表中所有名称的 ComboBox。
像这样:
<ListView Grid.Row="3"
Margin="10,0,10,0"
ItemsSource="{Binding ObjectList}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}"
Foreground="Black" />
<ComboBox ItemsSource="{Binding Tags}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
这是我在 ViewModel 上的 ObservableCollection:
private ObservableCollection<MyObject> _ObjectList = new ObservableCollection<MyObject>();
public ObservableCollection<MyObject> ObjectList
{
get
{
return _ObjectList;
}
set
{
_ObjectList = value;
RaisePropertyChanged("ObjectList");
}
}
如何将这些名称放入 ListView 的 ComboBox 中?在那个 ComboBox 中,我看到 App1.Model.Object 5 次!里面有5个项目,但我想显示名称。
您必须定义 属性 应该使用什么来命名组合框中的元素。您可以使用 属性 DisplayMemberPath
执行此操作。在此示例中,TagName
是包含项目名称的 属性Name。
<ComboBox ItemsSource="{Binding Tags}" DisplayMemberPath="TagName" />
这很正常,因为您的 Tag
是一个对象,您必须定义要显示的 属性 `
这是一个例子:
public class Tag
{
public string Property1 {get; set;}
public string Property2 {get; set;}
public string Description {get; set;}
}
现在,在您的 XAML 中,您将通过添加 :
来绑定此 属性 <ComboBox ItemsSource="{Binding Tags}", DisplayMemberPath=Description, Mode=Default/>