【问题标题】:How to reuse control template?如何复用控制模板?
【发布时间】:2010-10-18 10:23:47
【问题描述】:

我可以创建参数化的控件模板,即创建可能包含不同控件的控件模板。例如,我可以使用带有标签或按钮的控件模板——我想要的任何位置。

<ControlTemplate x:Key="MessageCTemplate">
<Grid …>
  <Rectangle …/>
  <Rectangle …/>
  <Rectangle …/>
  …
  <!--I want to have here button, label or whatever I want-->
  <label x:Name=”MsgLabel”>
<Grid/>

<Style x:Key="MsgStyle" TargetType="{x:Type Button}">
      <Setter Property="Opacity" Value="0.6" />
      <Setter Property="Template" Value="{StaticResource MessageCTemplate}" />
<Style/>

我不喜欢编写相同的控件模板,它们的代码中只有一个不同的字符串。或者,也许,我误解了 smth,并且存在另一种避免复制过去的方法。

【问题讨论】:

    标签: wpf


    【解决方案1】:

    您所描述的是一个 ContentControl。这是许多常用控件的基类,包括 Button、Label、ListBoxItem...

    ContentControl 的想法是它可以定义自己的布局和一些 UI 元素,还包括一个占位符,可以注入任何设置为其 Content 属性的内容。还有一个 HeaderedContentControl 允许 2 个占位符用于其他内容。

    <ControlTemplate x:Key="MessageCTemplate" TargetType="{x:Type ContentControl}">
    <Grid …>
      <Rectangle …/>
      <Rectangle …/>
      <Rectangle …/>
      <ContentPresenter/> <!-- This is where the content shows up -->
    <Grid/>
    </ControlTemplate>
    
    <Button Template="{StaticResource MessageCTemplate}">
      <Label Content="My label"/>
    </Button>
    
    <Button Template="{StaticResource MessageCTemplate}">
      <Ellipse Fill="Orange" Width="100" Height="30"/>
    </Button>
    

    【讨论】:

      猜你喜欢
      • 2011-04-01
      • 1970-01-01
      • 2016-09-07
      • 2011-10-17
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多