2010-10-19 3 views
2

Я создал новый проект WPF и бросил DataGrid. Теперь я пытаюсь найти самый простой способ привязать к нему коллекцию данных.Как обычно устанавливается DataContext?

Пример, который я скачал, кажется, сделать это в окне c'tor:

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 
     DataContext = new ViewModel(); 
    } 
} 

Но привязок, кажется, не отображаются в окне Свойства в Visual Studio. Я уверен, что есть способ установить контекст данных в XAML тоже ... это сделало бы меня еще более счастливым, если бы я мог сделать это непосредственно через окно свойств, но все параметры привязки пустые. Каков типичный подход?

Редактировать:At 14 minutes, он начинает говорить о других методах настройки контекста данных, таких как статические ресурсы и некоторый метод «инъекции». Я хочу узнать больше об этом!

+0

Кажется, его проще всего установить «DataContext» в коде, потому что вы часто захотите иметь кучу кода, который его модифицирует ... таким образом вам не нужно продолжать извлечение DataContext при приведя его к соответствующему типу. – mpen

ответ

2

Посмотрите на MVVM design pattern. Этот шаблон очень подходит для приложений wpf.

Здесь описано, где хранить ваши данные и как привязать ваш ui к данным.

+0

Надеюсь на быстрый ответ, а не на другой учебник монстра;) Я читал о MVVM по ASP .NET MVC, но я специально хочу знать, как привязывать данные так, чтобы он работал с окном свойств. – mpen

3

Обычно я использую MVVM. Вы можете реализовать упрощенную версию, установив контекст данных в свой код позади и имея класс типа модели, который содержит ваши данные.

Пример: В вашем коде позади

DataContext = Model; // where Model is an instance of your model 

затем в ваш взгляд

<DataGrid .... ItemsSource="{Binding SomeProperty}">.... 

Где SomeProperty это перечислимого свойство на вашей модели представления

Вы также можете установить контекст данных в XAML с использованием DataContext

<uc:SomeUserControl DataContext="{Binding AnotherProperty}".... 

Это будет управлять вашим пользователем в пределах DataContextAnotherProperty на вашей модели.

Обратите внимание, что это упрощенно, но это поможет вам.

Смежные вопросы