如何在WPF Visual Studio Designer中显示占位符值,直到可以加载实际值

我是一位经验丰富的C#开发人员,但是一名WPF新手。 基本问题(我认为)我无法通过网络搜索找到答案。 这是简化的用例……

我想在WPF TextBlock中显示一个字符串。 所以我在XAML控件的代码隐藏中编写了一些C#代码…

public class MyCoolControl : UserControl { public void InitializeMyCoolControl() { this.DataContext = "SomeStringOnlyAvailableAtRuntime"; // Perhaps from a database or something... } } 

我设置了这样的XAML:

     

效果很好,我可以在执行应用程序时看到值“SomeStringOnlyAvailableAtRuntime”。 但是,我在Design Time使用Visual Studio 2008的XAML Designer时看不到任何内容。

如何在设计时查看文本块的占位符值(任何内容)?

谢谢!

-麦克风

在设计用户控件时,我经常在绑定上使用FallbackValue来查看。 例如:

  

但是,由于FallbackValue不仅仅是在设计时应用,如果您想在运行时出于其他原因使用FallbackValue ,这可能不合适。

在您的示例中,您可能需要使用TargetNullValue ,而不是FallbackValue因为绑定表达式可能为null因为DataContext在设计时为null

如果绑定中给出的Path不存在,则使用FallBackValue ,但由于未指定路径,因此我假设DataContext将被计算为null

     

另请注意,需要.NET Framework 3.5 SP1,因为SP1中添加了这两个附加属性。

我不知道如何使用Visual Studio的编辑器执行此操作,但您可以使用Expression Blend执行此操作。

这里和文章描述了如何实现这一目标。

我希望MS将Blend和Visual Studio的function合并在一起,因为有一个包做一件事而另一件有点傻。 特别是当他们来自同一家公司时。

在这种情况下,使用MultiValueConverter或ViewModel对象处理对象加载并为您更新依赖项属性不是最佳选择吗?