来自 XAML/C# 中的 WinJS 模拟的模板呈现器
本文关键字:模拟 XAML 中的 WinJS 来自 | 更新日期: 2023-09-27 18:33:17
>在WinJS应用程序中itemTemplate
列表视图的属性可以接受一个函数,我可以在其中手动创建元素。
此方法在 XAML/C# 应用程序中的模拟是什么?
我知道数据模板选择器,但我需要手动创建项目,由于性能原因,我想摆脱模板。
你见过DataTemplateSelector吗? http://code.msdn.microsoft.com/windowsapps/The-DataTemplateSelector-93e46ad7
我认为你可以从 ItemsControl 继承一个自定义控件。
public class BuildingComparer : ItemsControl
{}
在那里,您将找到一些覆盖方法:
protected override DependencyObject GetContainerForItemOverride()
{
var container = new ContentPresenter();
//Do Stuff
return container;
}
并且您可以访问 Items 属性,以便可以在发生 SizeChanged 事件时绘制元素,您可以调用手动绘制所有元素的方法。
希望对您有所帮助。
若要在 C#/XAML 中完成此操作,需要将 ItemsControl 的 ItemsSource
属性绑定到为您创建项的属性。
示例 XAML:
<ItemsControl ItemsSource="{Binding SourceProperty}" />
示例数据上下文:
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;
}