使用TemplateBinding的WPF问题

时间:2011-10-05 18:16:10

标签: wpf visual-studio-2008

我正在使用VS2008。我有这个班级

[System.Windows.Markup.ContentProperty("Child")]
public class CaptionedBox : Control
{
    static CaptionedBox()
    {
        DefaultStyleKeyProperty.OverrideMetadata(typeof(CaptionedBox), 
            new FrameworkPropertyMetadata(typeof(CaptionedBox)));
    }

    public static readonly DependencyProperty ShadeVisibilityProperty = 
        DependencyProperty.Register(
        "ShadeVisibility", typeof(Visibility), typeof(CaptionedBox), new 
         PropertyMetadata(Visibility.Hidden));
}

这个代码在ResourceDictionary中(在一个名为Generic.xaml的文件中)

<ControlTemplate TargetType="{x:Type wft:CaptionedBox}">
    <Grid>
        ...
        <Rectangle Fill="#44000000" Visibility="{TemplateBinding ShadeVisibility}"/>
    </Grid>
</ControlTemplate>

没有错误,没有问题,我在整个地方都使用了这个CaptionedBox。

我在同一个项目中有另一个XAML页面,该页面使用Source =“../ Themes / Generic.xaml”引用此ResourceDictionary。当我打开该页面时,它显示“资源字典XAML文件有错误,无法加载”。它指的是那时的Generic.XAML。如果我双击错误消息,即使在VS 2008中打开Generic.XAML,我会得到一个不同的选项卡,看起来像是不同的Generic.xaml,除了内容是相同的,如果我复制每个的完整路径标签,我看到了:

C:\源\ LyonsForge \根\ PumpServicing \分支\ PSRT_1_0_2 \代码\工作台\控制\向导.. \主题\ Generic.xaml C:\源\ LyonsForge \根\ PumpServicing \分支\ PSRT_1_0_2 \代码\工作台\控制\主题\ Generic.xaml

虽然有点尴尬,但路径相同。

任何线索?

1 个答案:

答案 0 :(得分:0)

您是否已将generic.xaml复制到本地?另外,不要忘记在文件属性上设置选项:“复制到输出目录”到“始终复制”,因为generic.xaml不是要编译的。