# Frame x Page x Window x MVVM 一般都會以為Frame的DataContext設定了以後,就會自動套用到Page,但其實就算設定了也不會生效 ㄟ,flier268,既然沒有用那幹嘛設定? 這時候可以用個小技巧,讓Frame載入後(Loaded事件),將Frame中的Page的DataContext設的跟Frame的DataContext一樣,這樣就OK了,如果有更好的方法請指點一下 ## Demo code MainWindow.xaml ```wpf <Window ...> <Frame DataContext="{Binding ResultTablePageViewModel}" Loaded="OnLoaded" Source="ResultTablePage.xaml" /> </Window> ``` ResultTablePage.xaml ```wpf <Page> <!--Context--> </Page> ``` MainWindow.xaml.cs ```C# namespace Testplat2.Views { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { } // 重點在這邊,把Frame的DataContext設定成Page的DataContext private void OnLoaded(object sender, RoutedEventArgs e) { Frame? frame = sender as Frame; if (frame?.Content is Page page) { page.DataContext = frame.DataContext; } } } } ``` ###### tags: `C#` `WPF` `Page` `MVVM`