我目前正在開始使用XAML,並且對於如何定義元素的DataContext有一個疑問。WPF XAML:DataContext作爲XAML元素的屬性還是屬性之間的區別?
我創建了一個觀點,即包括與以下標記的頁面:
<Page x:Class="View.MainView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:ViewModel="clr-namespace:ViewModel"
mc:Ignorable="d"
Title="MainView">
...
</Page>
當我想給這個頁面一個DataContext由子元素被使用,其工作原理:
<Page x:Class="View.MainView"
...
mc:Ignorable="d"
Title="MainView">
<Page.DataContext>
<ViewModel:MainViewModel />
</Page.DataContext>
...
</Page>
這並不:
<Page x:Class="View.MainView"
...
mc:Ignorable="d"
Title="MainView" DataContext="ViewModel:MainViewModel">
...
</Page>
對於我來說,它看起來像Page元素預期的數據源是定義爲XAML屬性而不是屬性。但是,Visual Studio中的IntelliSense爲我提供了一個DataContext屬性,因此我想我只是在這裏使用了一個錯誤的語法。你能指出這一點嗎?
謝謝!
我猜在這裏,但第一個例子需要一個實例,其中作爲第二個不似乎實例化一個。 – 2015-02-24 15:20:56
我的代碼在View中沒有任何東西。通過調試,我發現(工作)示例調用ViewModel類的無參數公共構造函數。 – GeorgDangl 2015-02-24 15:25:18
'DataContext =「ViewModel:MainViewModel」只將字符串「ViewModel:MainViewModel」分配給DataContext屬性。它沒有(也不應該)創建一個MainViewModel類的實例。請參閱MSDN上的[XAML語法詳細信息](https://msdn.microsoft.com/en-us/library/ms788723.aspx)文章。 – Clemens 2015-02-24 15:29:16