WPF用户控件扩展边界类&引用;不支持直接内容";?
我正在为一个过程控制系统制作图形,我想创建一个系统边框,它可以直观地包装过程模拟中显示的各个子系统。我可以使用一个常规的边框,除了我希望它不仅可以改变颜色反映系统状态,还可以弹出小的“气球”,指示处于报警状态的系统部件 我创建了一个带有用户控件的测试项目,并添加了一个列表框(用于引出序号)和一个封装在边框控件中的ContentPresenter元素。但是,每当我在其他应用程序中使用此新控件时,它都不允许我向其添加内容。我尝试过将一些内容与ContentPropertyAttribute和ContentPresenter元素的属性混为一谈,但我觉得我在这里是盲目的WPF用户控件扩展边界类&引用;不支持直接内容";?,wpf,xaml,wpf-controls,Wpf,Xaml,Wpf Controls,我正在为一个过程控制系统制作图形,我想创建一个系统边框,它可以直观地包装过程模拟中显示的各个子系统。我可以使用一个常规的边框,除了我希望它不仅可以改变颜色反映系统状态,还可以弹出小的“气球”,指示处于报警状态的系统部件 我创建了一个带有用户控件的测试项目,并添加了一个列表框(用于引出序号)和一个封装在边框控件中的ContentPresenter元素。但是,每当我在其他应用程序中使用此新控件时,它都不允许我向其添加内容。我尝试过将一些内容与ContentPropertyAttribute和Con
<UserControl x:Class="SystemStatusBorder.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">
<Canvas Height="290" Width="303">
<Border HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<ContentPresenter/>
</Border>
<ListBox Canvas.Right="0" Canvas.Bottom="0">
<ListBox.RenderTransform>
<TranslateTransform X="20"></TranslateTransform>
</ListBox.RenderTransform>
<ListBoxItem>TagA</ListBoxItem>
<ListBoxItem>TagB</ListBoxItem>
</ListBox>
</Canvas>
</UserControl>
塔加
塔格
我不明白。除了contentpresenter的存在,它还需要什么?UserControl是ContentControl的子类,所以我认为连接已经就绪。最终,我希望它能被这样使用:
<SystemBorder>
<SystemBorder.MonitoredTags>
<List of relevant tags for the specific sub system goes here>
</SystemBorder.MonitoredTags>
<regular content goes here>
</SystemBorder>
要创建自己的容器控件,必须创建新的自定义控件(而不是UserControl) 使新控件从ContentControl继承 自定义控件没有自己的XAML。相反,它们被分配了一个ControlTemplate 创建第一个自定义控件时,IDE将创建一个新文件Themes\Generic.xaml 这就是控件的模板所在的位置。您可以修改此模板以匹配问题中的XAML。这将支持ContentPresenter元素
我发现了一个非常好的演练。非常感谢!迫不及待地想看看。