为什么某些TemplateBinding值未在设计器中显示,而其他值则是? [与repro代码]

时间:2013-10-30 08:53:21

标签: c# wpf xaml

我有一个奇怪的情况: 以下示例代码替换窗口的内容,使用setter的背景颜色并为堆栈面板提供两个标签。一个用于背景,一个用于标题。

事情是,他们在设计时间 <Label Content="{TemplateBinding Background}" />确实可以完美地显示背景值 <Label Content="{TemplateBinding Title}" />仅在运行应用时执行此操作。 这有什么区别?

我玩过TargetType(通过将其设置为MainWindow,没有效果)

这是完整的样本:

<Window x:Class="TBinding.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Height="350" Width="525">
    <Window.Style>
        <Style TargetType="Window">
            <Setter Property="Background" Value="LawnGreen" />
            <Setter Property="Title" Value="The title of this window" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Window">
                        <StackPanel Margin="50" Background="{TemplateBinding Background}">
                                <Label Content="{TemplateBinding Background}" />
                                <Label Content="{TemplateBinding Title}" />
                        </StackPanel>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </Window.Style>
</Window>

1 个答案:

答案 0 :(得分:2)

在连接时找到:https://connect.microsoft.com/VisualStudio/feedback/details/770067/wpf-designer-not-sho

Designer为Window类创建代理,而不是Window本身。替代品并未完全反映所有属性,因此功能有限。

此问题在VS2012中也出现在VS2013中。