将DataGridTextColumn或DataGridTemplateColumn绑定到外键

时间:2013-12-18 08:20:11

标签: c# wpf

我已经为Combobox提出了类似的问题并得到了一个很好的答案。现在我蚂蚁将DataGridTextColumn绑定到Foreign Key,如果可能的话。否则,我可以将DataGridTemplateColumn绑定到Foreign Key

为了演示我的问题,我们来看一个例子:

假设我有两个表:

Cusstomer

CustomerID
Name
Gender //ForeignKey

性别

GenderID
Value

我正在使用entity framework自动生成我的Models

现在我尝试按如下方式绑定DataGridTemplateColumn:

<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding DataContext.Customers, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" 
          SelectedItem="{Binding SelectedPatient}" RowDetailsVisibilityMode="VisibleWhenSelected"
          IsReadOnly="True" SelectionMode="Single" SelectionUnit="FullRow" >
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name}" Header="Patient Name" Width="25*" />
        <!--<DataGridTextColumn Binding="{Binding Gender}" Header="Gender" Width="10*" />-->
        <DataGridTemplateColumn Header="Gender" >
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ItemsControl ItemsSource="{Binding ???}" >
                        <ItemsControl.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding ???}"/>
                            </DataTemplate>
                        </ItemsControl.ItemTemplate>
                    </ItemsControl>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid>

但我不知道正确的绑定。

希望有人帮忙。

1 个答案:

答案 0 :(得分:1)

{Binding Gender.Value}

适用于您的模特

public class YourViewModel
{
    public List<Customer> Customers { get; set; }
    public Customer SelectedCustomer { get; set; }
}

public class Customer
{
    public int CustomerID { get; set; }
    public string Name { get; set; }
    public Gender Gender { get; set; }
}

public class Gender
{
    public int GenderID { get; set; }
    public string Value { get; set; }
}

PS。 btw规范化表格的性别太多了。您可以考虑使用check possible column value