如何使用自定义内容定义 UserControl?
Posted
技术标签:
【中文标题】如何使用自定义内容定义 UserControl?【英文标题】:How to define UserControl with custom content? 【发布时间】:2011-10-11 09:39:01 【问题描述】:我想定义包含用户内容的自定义装饰器。但是当我尝试设置一些控件的名称时它总是失败。尝试执行此操作时,我总是遇到此异常:
无法在元素“Button”上设置名称属性值“butt”。 '按钮' 位于元素“UserControl1”的范围内,该元素已有名称 在另一个范围内定义时注册。
我不明白为什么会这样。这是代码:
<UserControl x:Class="WpfApplication5.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="300"
x:Name="control">
<ContentPresenter Content="Binding ElementName=control, Path=DataContext" />
</UserControl>
<Window x:Class="WpfApplication5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication5"
Title="MainWindow" Height="350" Width="525">
<local:UserControl1>
<local:UserControl1.DataContext>
<Button x:Name="butt" />
</local:UserControl1.DataContext>
</local:UserControl1>
</Window>
如何正确地做到这一点?
【问题讨论】:
你不能命名控件的内部用户控件,至少在 WPF4 中。 如果 UserControl 具有相同的布局但以编程方式定义(没有 XAML 文件),我可以 但是 XAML 方式是不可能的。我在某个地方读到了我忘记了。 这能回答你的问题吗? How to create a WPF UserControl with NAMED content 【参考方案1】:您不能在 UserControls 中命名元素,有人认为这是一个错误,但我不知道是否是这种情况,无论哪种方式,这都行不通。您可以将 Button 声明为 Window 的资源,然后通过 StaticResource
将其插入,但名称不会注册为窗口类中的字段。
不管怎样,你真的需要这个名字吗?
编辑:另见this question.
【讨论】:
以上是关于如何使用自定义内容定义 UserControl?的主要内容,如果未能解决你的问题,请参考以下文章