Данные времени разработки из внешних файлов XML - PullRequest
4 голосов
/ 29 марта 2011

Позволяет ли Visual Studio 2010 Visual Designer загружать данные через внешние XML-файлы во время разработки?

Кажется, что я могу добавить их с помощью d: DataContext, но у меня много данных, и это прощезагрузить его через XML.Так возможно ли это?

1 Ответ

2 голосов
/ 30 марта 2011

Одна вещь, которую вы можете сделать, это создать версию хранилища (или другой объект) во время разработки, которую вы будете использовать во время выполнения.Простой подход, который я использую на регулярной основе, выглядит следующим образом.

в App.xaml:

<Application ...>
  <Application.Resources>
    <local:MyClass x:key="DesignData"/>
  </Application.Resources>
</Application>

, тогда в конструкторе классов вы можете определить, что находитесь в режиме разработки, и заполнитьданные соответственно:

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

    // Normal ctor code.
  }
}

Наконец, используйте этот элемент и его данные в качестве контекста.

<Window ...>
  <Grid d:DataContext="{StaticResource DesignData}">
    ...
  </Grid>
</Window>

Это, вероятно, самый простой подход, который вы можете использовать для получения сложных данных времени проектирования,Конечно, вам может понадобиться использовать подкласс MyClass или другие подходы для очень сложных сценариев, но, похоже, вы знаете достаточно, чтобы справиться с этим.Исходя из личного опыта, вы можете использовать этот подход для создания проектных данных для любого состояния программы, о котором вы только можете подумать, и вы можете даже пойти так далеко, чтобы извлечь оперативные данные из БД, если хотите.Конечно, чем раньше вы начнете думать о данных проектирования в своем приложении, тем легче будет реально заставить его работать.

...