如何获取行模板选择器-wpf-gridcontrol中的行数

如何获取行模板选择器-wpf-gridcontrol中的行数,wpf,devexpress-wpf,Wpf,Devexpress Wpf,我需要在其RowTemplateSelector中获取GridControl的行数,以便基于该数字更改rows模板。 我正在尝试使用传递给TemplateSelector的Select()方法的容器字段。您不需要conatiner对象-从DX文档中检出示例: public class RowTemplateSelector : DataTemplateSelector { public DataTemplate EvenRowTemplate { get; set; } publ

我需要在其RowTemplateSelector中获取GridControl的行数,以便基于该数字更改rows模板。
我正在尝试使用传递给TemplateSelector的Select()方法的容器字段。

您不需要conatiner对象-从DX文档中检出示例:

public class RowTemplateSelector : DataTemplateSelector
{
    public DataTemplate EvenRowTemplate { get; set; }
    public DataTemplate OddRowTemplate { get; set; }
    public override DataTemplate SelectTemplate(object item, DependencyObject container) {

        RowData row = item as RowData; //<= mind this line of code!!!!

        if (row != null)
            return row.EvenRow ? EvenRowTemplate : OddRowTemplate;
        return base.SelectTemplate(item, container);
    }
}
使用视图对象可以访问相应的栅格对象

DataControlBase grid = view.DataControl;
有权访问DataControl意味着您有权访问其项源

object o = grid.ItemsSource;
从这里开始,你就需要计算你的物品来源的实际类型。 以下TemplateSelector根据项目数小于还是大于10返回不同的模板:

public class RowTemplateSelector : DataTemplateSelector
{
    public DataTemplate SmallerThenTenTemplate { get; set; }
    public DataTemplate BiggerThenTenTemplate { get; set; }
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        RowData row = item as RowData; //<= mind this line of code!!!!
        object itemSource = row.View.DataControl.ItemsSource;
        IEnumerable<YourModelType> sourceList = (IEnumerable<YourModelType>)itemSource;

        if (sourceList.Count() > 10)
            return BiggerThenTenTemplate;
        else
            return SmallerThenTenTemplate;
    }
} 
公共类RowTemplateSelector:DataTemplateSelector
{
公共数据模板SmallerThenTenTemplate{get;set;}
公共数据模板BiggerThenTenTemplate{get;set;}
公共覆盖数据模板SelectTemplate(对象项,DependencyObject容器)
{
RowData row=项目作为RowData;//10)
返回大帐篷;
其他的
返回较小的模板;
}
} 

您不需要conatiner对象-查看DX文档中的示例:

public class RowTemplateSelector : DataTemplateSelector
{
    public DataTemplate EvenRowTemplate { get; set; }
    public DataTemplate OddRowTemplate { get; set; }
    public override DataTemplate SelectTemplate(object item, DependencyObject container) {

        RowData row = item as RowData; //<= mind this line of code!!!!

        if (row != null)
            return row.EvenRow ? EvenRowTemplate : OddRowTemplate;
        return base.SelectTemplate(item, container);
    }
}
使用视图对象可以访问相应的栅格对象

DataControlBase grid = view.DataControl;
有权访问DataControl意味着您有权访问其项源

object o = grid.ItemsSource;
从这里开始,你就需要计算你的物品来源的实际类型。 以下TemplateSelector根据项目数小于还是大于10返回不同的模板:

public class RowTemplateSelector : DataTemplateSelector
{
    public DataTemplate SmallerThenTenTemplate { get; set; }
    public DataTemplate BiggerThenTenTemplate { get; set; }
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        RowData row = item as RowData; //<= mind this line of code!!!!
        object itemSource = row.View.DataControl.ItemsSource;
        IEnumerable<YourModelType> sourceList = (IEnumerable<YourModelType>)itemSource;

        if (sourceList.Count() > 10)
            return BiggerThenTenTemplate;
        else
            return SmallerThenTenTemplate;
    }
} 
公共类RowTemplateSelector:DataTemplateSelector
{
公共数据模板SmallerThenTenTemplate{get;set;}
公共数据模板BiggerThenTenTemplate{get;set;}
公共覆盖数据模板SelectTemplate(对象项,DependencyObject容器)
{
RowData row=项目作为RowData;//10)
返回大帐篷;
其他的
返回较小的模板;
}
}