在WinJS应用程序中,listview的itemTemplate
属性可以接受一个函数,我可以在其中手动创建元素。
XAML / C#应用程序中此方法的模拟是什么?
我了解DataTemplate选择器,但我需要手动创建项目,因为性能,我想要删除模板。
答案 0 :(得分:0)
你见过DataTemplateSelector吗? http://code.msdn.microsoft.com/windowsapps/The-DataTemplateSelector-93e46ad7
答案 1 :(得分:0)
我认为您可以从ItemsControl继承CustomControl。
public class BuildingComparer : ItemsControl
{}
在那里,你会发现一些覆盖的方法:
protected override DependencyObject GetContainerForItemOverride()
{
var container = new ContentPresenter();
//Do Stuff
return container;
}
您可以访问Items属性,这样您可以在SizeChanged事件发生时绘制元素,您可以调用方法,手动绘制所有元素。
希望它对你有所帮助。
答案 2 :(得分:0)
要在C#/ XAML中完成此操作,您需要将ItemsControl的ItemsSource
属性绑定到为您创建项目的属性。
示例XAML:
<ItemsControl ItemsSource="{Binding SourceProperty}" />
示例DataContext:
public IEnumerable SourceProperty
{
get
{
yield return new TextBlock(new Run("First"));
yield return new TextBlock(new Run("Second"));
yield return new TextBlock(new Run("Third"));
}
}
编辑:
如果你绝对必须避免所有数据绑定(我不知道你为什么会这样做),你可以在代码隐藏中分配ItemsSource
:
更新了XAML:
<ItemsControl Name="MyItemsControl" />
代码背后:
public MainWindow()
{
InitializeComponent();
MyItemsControl.ItemsSource = SourceProperty;
}