Я хочу определить DataContext моего окна из внешнего класса, чтобы иметь возможность использовать DI для моей модели данных.Я прочитал некоторые уроки об этом, но я все еще не могу заставить его работать вместе.Скажем, у нас есть простая модель данных:
class Data
{
public String Value { get; set; }
public Data()
{
Value = "Test";
}
}
Когда я вписываю объект данных в код XAML, привязка данных работает правильно:
<Window ...>
<Window.Resources>
<src:Data x:Key="data" />
</Window.Resources>
<Window.DataContext>
<Binding Source="{StaticResource ResourceKey=data}" />
</Window.DataContext>
<Grid>
<Label Content="{Binding Path=Value}" />
</Grid>
</Window>
Но если я пытаюсь связатьданные из внешнего класса, окно просто ничего не показывает, и я не получаю ошибку:
<Window ...>
<Grid>
<Label Content="{Binding Path=Value}" />
</Grid>
</Window>
И основной класс:
class Test
{
[@STAThreadAttribute()]
public static void Main(string[] args)
{
MainWindow w = new MainWindow();
Binding b = new Binding();
b.Source = new Data();
w.DataContext = b;
w.ShowDialog();
}
}
Я что-то упустил?Может быть, свойство DataContext
должно быть установлено из другого потока?