定義 DataContext
要在 WPF 中使用繫結,你需要定義 DataContext 。DataContext 告訴繫結預設情況下從哪裡獲取資料。
<Window x:Class="StackOverflowDataBindingExample.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:StackOverflowDataBindingExample"
xmlns:vm="clr-namespace:StackOverflowDataBindingExample.ViewModels"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<vm:HelloWorldViewModel />
</Window.DataContext>
...
</Window>
你也可以通過程式碼隱藏設定 DataContext,但值得注意的是 XAML IntelliSense 有點挑剔:必須在 XAML 中為 IntelliSense 設定強型別 DataContext,以建議可用於繫結的屬性。
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new HelloWorldViewModel();
}
}
雖然有一些框架可以幫助你以更靈活的方式定義 DataContext(例如 MVVM Light 有一個使用控制反轉的 viewmodel 定位器 ),但是為了本教程的目的,我們使用快速和髒的方法。
你可以為 WPF 中的幾乎任何可視元素定義 DataContext。DataContext 通常從可視樹中的祖先繼承,除非它已被顯式覆蓋,例如在 ContentPresenter 中。