来自外部 XML 文件的设计时数据

kev*_*aub 5 wpf design-time visual-studio-2010 design-time-data

Visual Studio 2010 可视化设计器是否允许在设计时通过外部 XML 文件加载数据?

看来我可以通过 d:DataContext 添加它,但是我有很多数据,通过 XML 加载它更容易。那么这可能吗?

A.R*_*.R. 2

您可以做的一件事是制作将在运行时使用的存储库(或其他对象)的设计时版本。我经常使用的一个简单方法如下。

在 App.xaml 中:

<Application ...>
  <Application.Resources>
    <local:MyClass x:key="DesignData"/>
  </Application.Resources>
</Application>
Run Code Online (Sandbox Code Playgroud)

然后在类构造函数中,您可以检测到您处于设计模式并相应地填充数据:

public class MyClass
{
  public MyClass()
  {
    bool isInDesign = DesignerProperties.GetIsInDesignMode(new DependencyObject());
    if (isInDesign)
    {
      // Load your XML + other setup routines.
    }

    // Normal ctor code.
  }
}
Run Code Online (Sandbox Code Playgroud)

最后,使用该项目及其数据作为您的上下文。

<Window ...>
  <Grid d:DataContext="{StaticResource DesignData}">
    ...
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

这可能是可用于获取复杂设计时数据的最简单方法。当然,对于非常复杂的场景,您可能需要使用“MyClass”的子类或其他方法,但听起来您知道足以处理这个问题。从个人经验来看,您可以使用这种方法为您能想到的任何程序状态制作设计数据,如果您愿意,您甚至可以从数据库中提取实时数据。当然,您越早开始考虑应用程序中的设计数据,实际运行起来就越容易。