【问题标题】:WPF Custom Control That Displays Content Inline or in a Popup内联或在弹出窗口中显示内容的 WPF 自定义控件
【发布时间】:2015-06-30 17:57:07
【问题描述】:
我正在创建一个具有 DisplayMode 属性的自定义 WPF 内容控件,该属性可以是:
当 DisplayMode="Inline" 时,我的 ControlTemplate 可以像平常一样使用标准的 ContentPresenter。
但是,当 DisplayMode="Popup" 时,我希望内容显示在 Popup 控件中。
我应该如何解决这个问题?
当 DisplayMode 属性发生变化时,它是否必须纯粹在代码中发生?如何在 ContentPresenter 和 Popup 之间移动 Content 属性的内容?
【问题讨论】:
标签:
c#
wpf
popup
custom-controls
contentpresenter
【解决方案1】:
看起来我试图让它变得比实际更复杂。
解决方案是创建两个单独的 ControlTemplate(s)。一种显示内联,另一种显示在 Popup 控件中。
接下来,我所要做的就是创建几个样式触发器,它们根据 DisplayMode 属性的值更改 ControlTemplate。
看起来像这样:
<Style x:Key="MyControlStyle" TargetType="{x:Type my:MyControl}">
<Setter Property="Template" Value="{StaticResource InlineTemplate}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding DisplayMode}" Value="Inline">
<Setter Property="Template" Value="{StaticResource InlineTemplate}"/>
</DataTrigger>
<DataTrigger Binding="{Binding DisplayMode}" Value="Overlay">
<Setter Property="Template" Value="{StaticResource OverlayTemplate}"/>
</DataTrigger>
</Style.Triggers>
</Style>