如何获取行模板选择器中的行数 - wpf - gridcontrol
How to get the number of rows in a row template selector - wpf - gridcontrol
我需要在其 RowTemplateSelect 中获取 GridControl 的行数,或者根据该数字更改行模板。
我正在尝试使用传递给 TemplateSelector.
的 Select() 方法的容器字段
您不需要 conatiner-object - 查看 DX-docs 中的 this 示例:
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);
}
}
使用RowData-object可以访问对应的View-object
DataViewBase view = row.View;
使用View-object可以访问对应的Grid-object
DataControlBase grid = view.DataControl;
可以访问 DataControl 意味着您可以访问它的 item-source
object o = grid.ItemsSource;
接下来就是转换和计算 ItemsSource 的实际类型的问题。
以下 TemplateSelector returns 不同的模板取决于 item-count 是小于还是大于十:
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;
}
}
我需要在其 RowTemplateSelect 中获取 GridControl 的行数,或者根据该数字更改行模板。 我正在尝试使用传递给 TemplateSelector.
的 Select() 方法的容器字段您不需要 conatiner-object - 查看 DX-docs 中的 this 示例:
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);
}
}
使用RowData-object可以访问对应的View-object
DataViewBase view = row.View;
使用View-object可以访问对应的Grid-object
DataControlBase grid = view.DataControl;
可以访问 DataControl 意味着您可以访问它的 item-source
object o = grid.ItemsSource;
接下来就是转换和计算 ItemsSource 的实际类型的问题。 以下 TemplateSelector returns 不同的模板取决于 item-count 是小于还是大于十:
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;
}
}