3

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

问题是,它们在设计时 <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>
4

1 回答 1

2

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

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

这个问题出现在 VS2012 和 VS2013 中。

于 2013-10-30T11:22:39.117 回答