我有两个相关的实体:
python manage.py make_import
还创建了List以在WPF中显示数据:
public class Event
{
public string ID { get; set; }
public DateTime EventDate { get; set; }
public string EventData { get; set; }
public string DocID1 { get; set; }
public int DocID2 { get; set; }
public virtual Document Document1 { get; set; }
public virtual Document Document2 { get; set; }
}
public class Document
{
public string ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Number { get; set; }
}
我的EventList的数据来自实体事件:
private ObservableCollection<Event> eventList;
public ObservableCollection<Event> EventList
{
get { return eventList; }
set
{
if (value != eventList)
{
eventList = value;
}
RaisePropertyChanged(nameof(EventList));
}
}
我需要的是如果DocID1不为null,如何将GridControl Column“colFirstName”值设置为“Document1.FirstName”,如果DocID2不为null,则设置为“Document2.FirstName”。我的GridControl的XAML代码如下,您可以帮助在Xaml中进行操作,而不是在ViewModel中,或者如果在Xaml中无法做到这一点,那么在ViewModel中执行此操作的最佳方法是什么。
var query = DBContext.Events.Select(x => x).AsQueryable();
EventList = query.ToList();
答案 0 :(得分:1)
这种逻辑应该在模型或视图模型类中实现。请记住,XAML只是一种标记语言。
只需创建另一个返回第一个匹配并绑定到此匹配的属性。如果您的实体类是自动生成的,则可以创建一个新的分部类:
public partial class Event
{
public string DocName
{
get
{
if (Document1 != null)
return Document1.FirstName;
if (Document2 != null)
return Document1.LastName;
return null;
}
}
}
<dxg:GridColumn
x:Name="colFirsnName"
Width="120"
FieldName="DocName"
Header="First Name"
Visible="True"
VisibleIndex="1" IsReadOnly="true" />
答案 1 :(得分:1)
您可以使用UnboundExpression属性创建一个custom expression的列。例如,要有条件地显示来自不同属性的值,请使用 Iif 函数:
<dxg:GridColumn FieldName="CustomColumn" x:Name="colFirsnName"
UnboundExpression="Iif(IsNullOrEmpty([DocID1]), [Document2.FirstName], [Document1.FirstName])"
UnboundType="String"/>