在我们的应用程序中,所有视图都有一个“基本”布局。为了重用公共代码,我为它创建了一个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>
示例视图看起来像预期的,但是我在派生控件中编写的每个东西都不可见。
感谢您提供任何提示和想法
曼努埃尔
答案 0 :(得分:0)
在发布此问题几分钟后,我找到了答案。 我必须为ControlTemplate定义TargetType。否则TargetType是Control。 Control本身没有Content属性。
<ControlTemplate TargetType="{x:Type UserControl}">