C# Visual Studio 2013 WPF设计时数据不是';t显示

C# Visual Studio 2013 WPF设计时数据不是';t显示,c#,wpf,visual-studio-2013,C#,Wpf,Visual Studio 2013,我有一些在designer中显示良好的UserControl,但是我不能从构造函数中对设计时示例内容进行任何更改。看起来它根本就没有被执行 XAML: 代码: 使用System.ComponentModel; 使用System.Windows.Controls; 名称空间示例 { /// ///Test.xaml的交互逻辑 /// 公共部分类测试:UserControl { 公开考试() { 初始化组件(); if(DesignerProperties.GetIsInDesignMod

我有一些在designer中显示良好的UserControl,但是我不能从构造函数中对设计时示例内容进行任何更改。看起来它根本就没有被执行

XAML:


代码:

使用System.ComponentModel;
使用System.Windows.Controls;
名称空间示例
{
/// 
///Test.xaml的交互逻辑
/// 
公共部分类测试:UserControl
{
公开考试()
{
初始化组件();
if(DesignerProperties.GetIsInDesignMode(此))
testx.Text=“在设计中!”;
}
}
}
我已经尝试了许多选项,但仍然无法理解如何在WPF设计器中显示设计时数据:(不同的上下文绑定也没有显示任何内容


PS:在Win8上尝试了干净的VS2012和VS2013项目。什么都不管用!:(我不知道该怎么办,在网上也没有发现任何类似的东西……仅仅添加设计签入构造函数并设置存在的控制文本就足够了吗?应该可以了,对吧?

K,简短的回答是:你走的路是对的。
长的一个是:它比那复杂一点

您的示例将“有点”起作用,如,如果您将
else testx.Text=RUNTIME;
放在
if
之后,如下所示:

if (DesignerProperties.GetIsInDesignMode(this))
   testx.Text= " IN DESIGN!";
else
   testx.Text= " Runtime";
您将在运行时上看到所需内容,但您担心设计时将保持为空

对于设计阶段,如果我没有弄错的话,您还需要设置上下文。 如果您使用的是任何一个MVVM框架,您都可以“免费”获得此功能。如中所示,您将拥有一个“设计时”属性,可以为设计设置所需的任何数据。关键是,如果我的内存正常,您需要一个空构造函数。 您还将使用绑定,而不是直接设置text属性


我记得上次我尝试在“香草”WPF中做类似的事情时,设计时的默认WPF和绑定有点不足(比如,没有MVVM,没有绑定),但我相信稍加修改是可以实现的。再说一次,我一时记不起来了。

你在使用任何框架吗?你想实现什么?你的代码中可能有一个错误,只有在设计模式下才会出现。要解决这类问题,你可以按照MSDN上描述的过程进行操作:。你甚至可以设置一个br在
测试
构造函数中查看
文本
属性是否被正确分配的关键点。我没有使用任何特定的内容,只是使用一个普通的WPF。我正在测试一个没有任何资源的控件。我试着附加,但似乎该构造函数甚至没有运行,在设计器中加载控件,什么都没有捕获(断点已填充,因此可以很好地加载源)。可能某些VS设置失败?我不知道…在VS2012中执行此操作,一切正常。也可能是Win8问题?我的代码没有任何错误。我在VS2013中也有相同的问题。我可以设置设计器datacontext以启用绑定Intellisense,但未显示设计器数据。如果找到解决方案,我会通知您。问题是我甚至不使用任何绑定。我尝试过简单控件,但它在设计时无法显示字符串。运行时字符串显示良好:(
using System.ComponentModel;
using System.Windows.Controls;

namespace Example
{
    /// <summary>
    /// Interaction logic for Test.xaml
    /// </summary>
    public partial class Test : UserControl
    {
        public Test()
        {
            InitializeComponent();
            if (DesignerProperties.GetIsInDesignMode(this))
                testx.Text = " IN DESIGN!";
        }
    }
}
if (DesignerProperties.GetIsInDesignMode(this))
   testx.Text= " IN DESIGN!";
else
   testx.Text= " Runtime";