【发布时间】:2017-11-17 05:41:04
【问题描述】:
<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Grid />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
如果我想将 ItemsPanelTemplate 从默认 (StackPanel) 更改为网格,我在 XAML 中执行上述操作。我怎样才能在代码中实现同样的功能?
我读到了这个here,但不明白。
【问题讨论】:
-
不要粗鲁;只是你所问的并不是 WPF 的真正预期工作方式。
-
嗯,它不是 WPF,它是 UWP。我在 C# 中创建了一个自定义控件,它继承了 ItemsControl 并根据算法将每个子元素放置在放射状图案中。模板必须始终是 Grid,不能是 StackPanel。
-
不管怎样;这种隐藏代码的恶作剧通常不是理想的方式。如果您正在创建自定义控件,您不能将您的 XAML 放入控件模板中并称其为好?
-
我在 NuGet 上看到的每个自定义控件都包含一个 C# 文件。
-
如果您总是想要一个 Grid 作为 ItemsPanel,您可以在 Generic.xaml 中自定义控件的默认样式中定义它。