【问题标题】: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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-28
      相关资源
      最近更新 更多