将控件包括在另一个.xml的ControlTemplate中



我想创建一个控件,在上面显示图像和水印(图像或其他东西)。
但是水印应该从另一个XAML文件加载,以便让人们自定义水印的显示方式:对齐、不透明度、大小、水印的性质(TextBlock、Image…)

例如,我可以用这个外观加载我的水印

<Border BorderThickness="5" BorderBrush="Aqua" Width="50" Height="50">
  <Image Source="play.png" />
</Border>


此代码来自我的Themes/generic.xaml,MyWatermarkControl(从Control继承)是包含控件代码(依赖属性)的类。

<Style TargetType="local:MyWatermarkControl">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="local:MyWatermarkControl">
        <Grid>
          <Image Source="{TemplateBinding ImagePath}" />
          <Image x:name="watermark" Source="play.png" /> <!--I want this to be loaded from another .xaml-->
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

我的搜索结果让我在我的ControlTemplate中添加了一些东西,比如ContentPresenter、ContentTemplate、DataTemplate:这么多结果,我不明白它们是如何工作的,但事实上它们是嵌套的

您可以将Source属性添加到MyWatermarkControl,然后将嵌入的ImageSource属性绑定到此属性。有关更多详细信息,请参阅我编写的以下教程:

在WPF/Silverlight 中创建可重用用户控件的简单模式

最新更新