繁体   English   中英

WPF DataGrid ComboBox绑定到ViewModel中的集合和选择

[英]WPF DataGrid ComboBox binding to collection and selection in ViewModel

我有一个基本的MVVM WPF应用程序,该应用程序在DataGrid显示了一堆与用户相关的信息。 我有两个类(我简化了类,但没有像在我的真实应用程序中那样实现INotifyPropertyChanged

public class Address
{
    public String StreetName { get; set; }
}

public class Person
{
    public String Name { get; set; }
    public String Street { get; set; }
}

我的ViewModel包含两个ObservableCollections

ObservableCollection<Person>
ObservableCollection<Address>

我将ViewModel绑定到Window ,它显示了persons集合。 但是现在我想要将地址作为ComboBox以便用户只能从上面的地址集合中选择值。 类似于查询表。

这是我的XAML代码。 我管理过,那是显示地址集合,但不会显示人集合中的实际记录作为初始记录。

            <DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
            <DataGridTextColumn Header="Street" Binding="{Binding Street}"></DataGridTextColumn>

            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding DataContext.addresses, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}}" DisplayMemberPath="StreetName">
                        </ComboBox>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

组合框

SelectedItemSelectedValue属性(取决于您实际绑定的对象)设置为该地址。 因此,如果您存储街道名称,那么您将拥有以下名称:

<DataTemplate>
    <ComboBox ItemsSource="..."
              DisplayMemberPath="StreetName"
              SelectedValuePath="StreetName"
              SelectedValue="{Binding Street}"/>
</DataTemplate>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM