0

在我们的应用程序中,所有视图都有一个“基本”布局。为了重用通用代码,我为它创建了一个 BaseControl 类和一个模板。

我想要实现的是从“BaseControl”派生的每个控件的通用标题和页脚栏

XAML 中的具体视图:

<my:BaseControl x:Class="SampleView"
         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" 
         xmlns:my="clr-namespace:UserInterface" d:DesignWidth="924">
<Grid>
    //This elements are not visible - why?
</Grid>

公共基类(没有 XAML,但有模板)

public class BaseControl : System.Windows.Controls.UserControl{}

模板:

<Style TargetType="{x:Type my:BaseControl}" BasedOn="{StaticResource {x:Type UserControl}}">
<Setter Property="Template">
<Setter.Value>
            <ControlTemplate>
              <Grid>
                ....snip
                <Border Grid.Row="0" Name="SomeCommonUsedBorder">

                <ContentPresenter>
                  //every thing placed between
                  //<SampleView> and </SampleView> should go here
                 </ContentPresenter>

                ....snip
                //some other commonly used elements goes here
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

示例视图看起来像预期的那样,但是我在派生控件中编写的所有内容都是不可见的。

感谢您的任何提示和想法

曼努埃尔

4

1 回答 1

0

发布此问题几分钟后,我找到了答案。我必须为 ControlTemplate 定义 TargetType。否则 TargetType 是 Control。并且 Control 本身没有 Content 属性。

<ControlTemplate TargetType="{x:Type UserControl}">    
于 2012-09-05T16:04:55.553 回答