我有一种情况,在下面的课程中将解释
public class UserDetail
{
public string UserCode{get; set;}
public uint RoleId{get; set;}
public uint GroupId{get; set;}
}
和班级
public class UserRoleDetail
{
public uint RoleId{get; set;}
public string RoleName{get; set;}
}
我有一个数据网格,并将datacontext绑定到UserDetail对象的集合。
<DataGrid x:Name="usersgrid"
AlternatingRowBackground="LightBlue"
CanUserAddRows="False"
CanUserDeleteRows="False"
CanUserReorderColumns="True"
ItemsSource="{Binding}"
CanUserResizeColumns="True"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="User Code"
Binding="{Binding Path=UserCode}"/>
<DataGridTextColumn Header="Role"
Binding="{Binding Path=RoleId}">
<!-- Need to get the RoleName by looking up RoleDetails collection-->
</DataGridTextColumn>
<DataGridTextColumn Header="Group"
Binding="{Binding Path=GroupId}"/>
</DataGrid.Columns>
</DataGrid>
输出显示UserDetail类中的整数RoleId字段。我希望通过在后面的代码中的RoleDetails集合中查找RoleId来将其显示为RoleName。
我有什么方法可以在xaml中实现这一点。使用转换器的任何亮点??
提前致谢。
答案 0 :(得分:0)
我的建议是创建一个包装类,让我们说UserDetailWrapper包含UserDetailInstance和UserRoleDetailInstance这样
public class UserDetailWrapper
{
public UserDetail UserDetail
{
get;
set;
}
public UserRoleDetail UserRoleDetail { get; set; }
}
在您的代码中,为UserDetail集合生成UserDetailWrapper列表,并将UserRoleDetail设置为与roleID相对应。
现在将此集合作为ItemsSource绑定到DataGrid。
您必须相应地更新绑定,如
<DataGridTextColumn Header="User Code"
Binding="{Binding Path=UserDetail.UserCode}"/>
然后对于UserRoleDetailName你可以直接做
<DataGridTextColumn Header="Role"
Binding="{Binding Path=UserRoleDetail.RoleName}">