如何基于多重绑定对WPF多重绑定DataGridTextColumn进行排序?
我想根据多重绑定值对DataGridTextColumn进行排序-文本列同时绑定了日期和时间,因此排序操作应该基于日期时间进行 XMAL源代码是如何基于多重绑定对WPF多重绑定DataGridTextColumn进行排序?,wpf,sorting,wpfdatagrid,multibinding,datagridtextcolumn,Wpf,Sorting,Wpfdatagrid,Multibinding,Datagridtextcolumn,我想根据多重绑定值对DataGridTextColumn进行排序-文本列同时绑定了日期和时间,因此排序操作应该基于日期时间进行 XMAL源代码是 <DataGridTextColumn Header="Visit Date" CanUserSort="True" > <DataGridTextColumn.SortMemberPath> <MultiBinding StringFormat="{}{0} {1}">
<DataGridTextColumn Header="Visit Date" CanUserSort="True" >
<DataGridTextColumn.SortMemberPath>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="VisitDate"/>
<Binding Path="VisitTime" />
</MultiBinding>
</DataGridTextColumn.SortMemberPath>
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="VisitDate"/>
<Binding Path="VisitTime" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
public class Employee
{
public string empName { get; set; }
public string VisitDate { get; set; }
public string VisitTime { get; set; }
}
public class EmployeeInfo
{
public ObservableCollection<Employee> EmployeeList { get; set; }
public EmployeeInfo()
{
EmployeeList = new ObservableCollection<Employee>();
EmployeeList.Add(new Employee { empName = "John", VisitDate = "11/28/2015", VisitTime = "05:12 PM" });
EmployeeList.Add(new Employee { empName = "Potter", VisitDate = "10/28/2015", VisitTime = "04:33 PM" });
EmployeeList.Add(new Employee { empName = "James", VisitDate = "11/27/2015", VisitTime = "09:12 AM" });
}
}
视图和视图模型C#源代码如下
<DataGridTextColumn Header="Visit Date" CanUserSort="True" >
<DataGridTextColumn.SortMemberPath>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="VisitDate"/>
<Binding Path="VisitTime" />
</MultiBinding>
</DataGridTextColumn.SortMemberPath>
<DataGridTextColumn.Binding>
<MultiBinding StringFormat="{}{0} {1}">
<Binding Path="VisitDate"/>
<Binding Path="VisitTime" />
</MultiBinding>
</DataGridTextColumn.Binding>
</DataGridTextColumn>
public class Employee
{
public string empName { get; set; }
public string VisitDate { get; set; }
public string VisitTime { get; set; }
}
public class EmployeeInfo
{
public ObservableCollection<Employee> EmployeeList { get; set; }
public EmployeeInfo()
{
EmployeeList = new ObservableCollection<Employee>();
EmployeeList.Add(new Employee { empName = "John", VisitDate = "11/28/2015", VisitTime = "05:12 PM" });
EmployeeList.Add(new Employee { empName = "Potter", VisitDate = "10/28/2015", VisitTime = "04:33 PM" });
EmployeeList.Add(new Employee { empName = "James", VisitDate = "11/27/2015", VisitTime = "09:12 AM" });
}
}
公共类员工
{
公共字符串empName{get;set;}
公共字符串VisitDate{get;set;}
公共字符串访问时间{get;set;}
}
公共类EmployeeInfo
{
公共ObservableCollection EmployeeList{get;set;}
公共雇员信息()
{
EmployeeList=新的ObservableCollection();
添加(新员工{empName=“John”,VisitDate=“11/28/2015”,VisitTime=“05:12 PM”});
添加(新员工{empName=“Potter”,VisitDate=“10/28/2015”,VisitTime=“04:33 PM”});
添加(新员工{empName=“James”,VisitDate=“11/27/2015”,VisitTime=“09:12 AM”});
}
}
我认为您应该创建一个自定义比较器并将其应用于datagrid。看一看,难道你不能提供一个viewmodel属性,它包含格式化的结果文本并绑定到它而不是视图中的多重绑定吗?请参考viewmodel.@B.Balamanigandan,那么,添加public string VisitDateTime{get{return string.Format({0}{1}),VisitDate,VisitTime);}
到您的员工
并绑定到该员工而不是多重绑定?这并不能回答您关于如何按多重绑定排序的问题,但它应该可以解决根本问题。@B.Balamanigandan您可能希望按实际日期和时间排序,而不是按字符串表示。如果是这种情况,我可能会根据我的建议写一个答案,但仍然是作为viewmodel解决方案,而不是绑定相关的解决方案。我认为您应该创建一个自定义比较器并将其应用于datagrid。看一看,难道你不能提供一个viewmodel属性,它包含格式化的结果文本并绑定到它而不是视图中的多重绑定吗?请参考viewmodel.@B.Balamanigandan,那么,添加public string VisitDateTime{get{return string.Format({0}{1}),VisitDate,VisitTime);}
到您的员工
并绑定到该员工而不是多重绑定?这并不能回答您关于如何按多重绑定排序的问题,但它应该可以解决根本问题。@B.Balamanigandan您可能希望按实际日期和时间排序,而不是按字符串表示。如果是这种情况,我可以根据我的建议写一个答案——但仍然是作为viewmodel解决方案,而不是绑定相关的解决方案。