0
我希望從外部類定義我的窗口的DataContext,以便能夠將DI用於我的數據模型。 我已經閱讀了一些關於它的教程,但我仍然無法讓它一起工作。假設我們有一個簡單的數據模型:從控制器代碼中定義DataContext
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
屬性必須從不同的線程設置?
是的,它的工作!所以如果我理解正確,當我使用'DataContext = someObject'語法時,DataContext屬性會自動爲我的someObject實例化一個Binding對象? – slaphappy 2010-06-22 09:33:54
不,它只是直接設置對象。當您使用綁定和屬性的路徑時,它將註冊更改。使用綁定到一個對象,而不是一個對象的屬性是非常無用的;該對象將永遠不會改變,所以您將永遠不需要註冊更改,因此您不需要綁定到直接對象! – Arcturus 2010-06-22 09:54:04