【问题标题】:WPF XAML designer showing bound property names instead of property valuesWPF XAML 设计器显示绑定的属性名称而不是属性值
【发布时间】:2016-06-21 14:20:20
【问题描述】:

我的一个 XAML 文件在 XAML 设计器中显示了一个奇怪的行为(但不是在运行时):

public class MyDesignTimeViewModel
{

    public MyDesignTimeViewModel()
    {
        MyText = "abc";
        MyInt = 5;
    }

    public string MyText { get { ... } }
    public int MyInt { get { ... } }
}

然后在 XAML 中:

<UserControl xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             ...
             d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel}"
             >
    <TextBlock Text="{Binding MyText}" />
    <TextBlock Text="{Binding MyInt}" />
</UserControl>

在 XAML 设计器中,两个 TextBlock 实例显示以下内容:

MyText
0

XAML 设计器显示字符串属性的属性名称,而对于 int 属性,它显示一个 0。

错误窗口中没有错误。此外,它似乎实际上读取了属性,因为如果我将绑定更改为不存在的属性名称,内容就会消失。

我已重新启动 Visual Studio 和我的电脑并删除了 .suo 文件。

对此行为有何解释?

【问题讨论】:

    标签: wpf xaml xaml-designer


    【解决方案1】:

    谢谢你最后两个答案。就我而言,“在 XAML 中启用项目代码”也已随机关闭!我有几个星期没有让设计师拉取视图模型代码。非常高兴这已得到修复。所以总而言之,要让这个工作你需要:

    d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel}"

    以及带有蓝色方块和标题的小图标'启用 XAML 中的项目代码'

    【讨论】:

    • 我很欣赏这个答案。这很痛苦,我的只是像你一样随机翻转。
    【解决方案2】:

    我遇到了这个问题,但原因实际上是我没有启用 XAML 设计器中的启用项目代码。

    【讨论】:

      【解决方案3】:

      原来缺少的是IsDesignTimeCreatable 属性:

      d:DataContext="{d:DesignInstance vm:MyDesignTimeViewModel, IsDesignTimeCreatable=true}"
      

      使用该属性,一切都会按预期进行。

      【讨论】:

      • 人们可以尝试的另一件事:对我来说,诀窍是删除 .vs 文件夹(可能还有 bin 和 obj 文件夹)。是的。
      【解决方案4】:

      为了回应 J.G. 的回答,修复方法是在 XAML 设计器中启用项目代码,该设计器在某些时候神秘地被禁用了。

      新帐户,因此我无法投票或评论,我只是不喜欢看到正确答案被否决。

      【讨论】:

        猜你喜欢
        • 2017-06-25
        • 1970-01-01
        • 2015-04-24
        • 1970-01-01
        • 2015-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多