gpt4 book ai didi

c# - 数据绑定(bind) DockPanel

转载 作者:行者123 更新时间:2023-11-30 19:27:49 24 4
gpt4 key购买 nike

我正在尝试将 wpf 中的 Dockpanel 数据绑定(bind)到 View 模型集合。我正在使用它来创建可自定义的表单,因此在运行时之前我不知道停靠面板中应该有多少个 child 。

我遇到的问题是,当我从数据模板中设置附加属性 DockStyle.Dock 时,它似乎没有得到应用。以下 xaml 是我正在做的事情的简化版本。我希望第一个按钮填满屏幕的顶部,但实际发生的是它们水平堆叠。即使对 DockPanel.Dock 属性进行硬编码也不会影响按钮的布局。当我查看 XAMLPad 中的可视化树时,我注意到有 ContentPresenters 作为 DockPanel 的子项而不是按钮。 ContentPresenters 的布局是否与其他元素不同?是否有另一种技术可以将数据绑定(bind)到 DockPanel?

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >

<Grid>
<ItemsControl >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel LastChildFill="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button DockPanel.Dock="{Binding}" Content="{Binding}"></Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<sys:String>Top</sys:String>
<sys:String>Bottom</sys:String>
<sys:String>Left</sys:String>
<sys:String>Right</sys:String>
<sys:String>Top</sys:String>
<sys:String>Top</sys:String>
<sys:String>Top</sys:String>
</ItemsControl>
</Grid></Page>

Here is a picture of the rendered control in xamlpad

最佳答案

项目未停靠的原因是 DataTemplate 中的控件不是 DockPanel 的直接子项。我相信 ItemsControl 会为每个项目创建一个 ContentPresenter,就像 ListBox 会为每个项目创建一个 ListBoxItem项目。

您可以尝试使用 ItemContainerStyle 来停靠控件。我认为对其设置的任何属性都应该在 ContentPresenter 上设置。这样的事情可能会起作用:

<ItemsControl>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="DockPanel.Dock" Value="{Binding}" />
</Style>
</ItemsControl.ItemContainerStyle>
...
</ItemsControl>

不过,我不确定将字符串绑定(bind)到 Dock 属性是否有效。您可以尝试直接使用枚举中的值,看看是否也有帮助。

关于c# - 数据绑定(bind) DockPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17556336/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com