gpt4 book ai didi

wpf - 从 MVVM 动态添加控件到 View

转载 作者:行者123 更新时间:2023-12-04 14:17:24 25 4
gpt4 key购买 nike

在 WPF 中,我使用的是 MVVM 模型。

我有一个带有 Dockpanel 的 View ,我想为通过绑定(bind)找到的所有硬盘动态添加带有标签和文本框的 StackPanel。

因此我的 XAML 看起来像:

<DockPanel Grid.Row="1" HorizontalAlignment="Stretch" Margin="5">
<ItemsControl ItemsSource="{Binding Harddisks}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel DockPanel.Dock="Right" HorizontalAlignment="Right" Margin="2.5,0,0,0">
<Label Content="{Binding Path=Label}" />
<TextBox Text="{Binding Path=GB_Free}" Width="100" IsReadOnly="True"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

应该是四个Label和TextBox,但是只显示了第一个Label和TextBox。为什么?

最佳答案

ItemsControl 中的项目实际上并不是 DockPanel 的直接子项。您需要更改 ItemsControl 以指定 DockPanel 是面板。以下内容将导致 ItemsControl 创建一个 DockPanel 并将所有项目放入其中(而不是 ItemsControl 默认使用的 StackPanel)。

更多信息:MSDN: ItemsControl.ItemsPanel Property

   <ItemsControl ItemsSource="{Binding Harddisks}">
<ItemsControl.ItemsPanel>
<DockPanel Grid.Row="1" HorizontalAlignment="Stretch" Margin="5" />
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel DockPanel.Dock="Right" HorizontalAlignment="Right" Margin="2.5,0,0,0">
<Label Content="{Binding Path=Label}" />
<TextBox Text="{Binding Path=GB_Free}" Width="100" IsReadOnly="True"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

关于wpf - 从 MVVM 动态添加控件到 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14588082/

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