2014-11-04 66 views
1

我正在开发一个WPF应用程序,它显示来自加速度计的不断更新的值(X,Y,Z)。当我使用XAML修改窗口或甚至只是在设计器中查看窗口时,它会显示数据的实时流不断更新,就像程序正在运行一样。或者说,因为该程序正在运行(不知何故 - 我不知道如何)。停止Visual Studio在设计时显示实时设备数据?

漂亮,因为这是,它导致以下问题。当我真的执行程序时,我从设备中获得全部零。似乎Visual Studio正在使用这些数据,并且不会让它进入我的窗口。为了使它停止,我必须

1. activate a different file in the editor (or just close the .xaml file), then 
2. close and reopen visual studio. 

有没有更好的方法来保持Visual Studio做到这一点?


编辑 基于由SLaKs提供的答案,我已经添加了以下内容:

我现在检查DesignerProperties.GetIsInDesignMode(本)的价值的建议,但不同的问题,现在庄稼向上。我的主窗口的构造函数现在看起来是这样的:

public MainWindow() 
    { 
    InitializeComponent(); 

    var dc = this.TopGrid.DataContext as RawAccelStream_ViewModel; 
    if (DesignerProperties.GetIsInDesignMode(this) == false) 
     base.Background = Brushes.Bisque; 
    else 
    { 
     base.Background = Brushes.Blue; 
     dc.Dispose(); 
    } 
    } 

新的问题是,这种代码,运行应用程序时窗口的背景出现浓汤,但没有颜色的变化发生在所有的设计器视图。而设计器视图仍然显示值并仍然破坏窗口的应用程序实例。

回答

0

当您打开在设计器中使用控件的XAML文件时,设计器将创建该控件的实际实例。

您应该修改控件以检查它是否在设计器中运行并显示假数据或其他内容。

检查DesignerProperties.GetIsInDesignMode(this)

+0

如果那是真的,什么?设置DataContext = null?并在MainWindow.xaml.cs文件中执行此操作? – philologon 2014-11-04 22:36:55

+0

设计人员将只创建您在XAML中创建的控件实例;不是该文件的类。 – SLaks 2014-11-04 22:49:42

+0

如果这是真的,只需不要运行困扰你的代码。或者,您可以使用虚假的数据源,以便设计师看起来不错。 – SLaks 2014-11-04 22:50:13

相关问题