【发布时间】:2023-03-14 20:11:02
【问题描述】:
我有一个 ProfileUser EntityCollection 的配置文件。在这个类中,我有一个 Profile_ID 和一个 Profile 关系和一个 User_ID 但没有 USer 关系,因为 User 在另一个数据库中。
在我想通过 User.Username 访问的 Datagrid 中
我试过了,但是ofc不起作用...
public EntityCollection<ProfileUser> ProfileUsers
{
get
{
if (profile != null) return profile.ProfileUser;
else return null;
}
set
{
profile.ProfileUser = value;
}
}
这里是我的自定义类
public class ProfileUserExtended : ProfileUser
{
public Operator User
{
get
{
return OperatorManager.GetByGuId(this.User_ID);
}
}
}
当然不能通过基类来构造派生类。但我需要这个 Operator 成为我绑定到的集合的一部分...
希望你能理解我的问题并能提供帮助。
编辑: 这个转换器为我解决了这个问题:
public class OperatorConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
try
{
if (!(value is Guid)) return null;
if (!(parameter is string)) return null;
var guid = (Guid)value;
var par = (string)parameter;
var op = OperatorManager.GetByGuId(guid);
if (op == null) return null;
var prop = op.GetType().GetProperty(par);
if (prop == null) return null;
return prop.GetValue(op, null);
}
catch (Exception e)
{
throw (e);
}
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new System.NotImplementedException();
}
}
在 XAML 中:
<DataGridTextColumn Header="Name" Binding="{Binding Path=User_ID,Converter={StaticResource ResourceKey=operatorConverter},ConverterParameter='Name'}" IsReadOnly="True" />
【问题讨论】:
标签: c# inheritance properties overloading derived-class