通过复制 WPF 中的现有控件来动态添加控件的最佳实践
我有一个 TabControl
。 单击按钮时,我想向 TabControl
添加一个新的 TabItem
。 在各种技术中,我选择在 DockPanel
内部创建 UserControl
。 一切工作正常,除了新 TabItem 上的控件位置不是 0,而是 未在主窗体调整大小时展开。 一切都很简单。
<TabItem Header="new control">
<DockPanel LastChildFill="True">
<tc:TabItemTemplate/>
</DockPanel>
</TabItem>
TabItemTemplate 也位于 DockPanel 内部,但它没有停靠在 TabItem 内部。有什么问题吗?
I have a TabControl
.
While clicking a button I want to add a new TabItem
s to the TabControl
.
Among various techniques I've chosen to create UserControl
inside of a DockPanel
.
Everything works fine, except for the location of control on a new TabItem is not 0 and it is
not expanded on the main form resize.
Everything is quite simple.
<TabItem Header="new control">
<DockPanel LastChildFill="True">
<tc:TabItemTemplate/>
</DockPanel>
</TabItem>
And TabItemTemplate is also located inside a DockPanel, but it's not docked inside a TabItem. What's the catch?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我建议使用 TabControl.ItemTemplate ,并将 TabControl.ItemsSource 绑定到 ObservableCollection ViewModel。当用户单击按钮时,将新的视图模型实例添加到集合中。有关更多详细信息,请参阅本文:采用模型-视图-视图模型设计的 WPF 应用程序图案
I would suggest using TabControl.ItemTemplate, and bind TabControl.ItemsSource to ObservableCollection of ViewModels. When user clicks on a button, add new View Model instance to the collection. Refer to this article for more details: WPF Apps With The Model-View-ViewModel Design Pattern