我有一個5頁的WPF應用程序。在我的主窗口上,我有5個按鈕。我想要做的是點擊按鈕1在主窗口的框架中打開頁面1。我不想使用導航窗口。我應該使用某種綁定嗎?我想用xmal,代碼越少越好。在此先感謝我正處於學習階段!wpf按鈕點擊
Q
wpf按鈕點擊
4
A
回答
3
您可以設置您的按鈕'Click事件處理程序以撥打Frame.Navigate(Uri)及其各自的頁面。
在XAML:
<Frame Name="myFrame"/>
<Button Name="buttonPage1" Click="OnClickPage1">
Page1
</Button>
然後在後面的代碼:
void OnClickPage1(object sender, RoutedEventArgs e)
{
myFrame.Navigate(new Uri("page1"));
}
1
我假設的邏輯後續從您的意見是,按下按鈕,將打開第2頁2等
我的建議,這適用於所有的WPF開發,是採用MVVM。它會給你更多的靈活性和可測試性。
爲了實現您的問題MVVM:
爲每種視圖創建的ViewModels,一個是你的主窗口
每個視圖模型成爲在DataContext其各自的視圖。
在MainWindowViewModel實現5 ICommand屬性並將按鈕上的Command屬性綁定到MainWindowViewModel上的每個相應的ICommand屬性。
在主窗口上,我不確定您是否實現了Frame控件,但我建議使用ContentControl,將控件上的Content屬性綁定到MainWindowViewModel上Object類型的某些屬性。
在執行每個ICommand對象時,您需要將MainWindowViewModel上的content屬性設置爲該按鈕的匹配ViewModel。
在MainWindowView.xaml你需要實現一系列的視圖模型映射到視圖的DataTemplates的:
<DataTemplate DataType="{x:Type Page1ViewModel}">
<AdornerDecorator>
<views:Page1View DataContext="{Binding}"/>
</AdornerDecorator>
</DataTemplate>
我建議你看一下使用現有的許多MVVM框架之一。
MVVMFoundation - 重量輕,最低限度執行
MVVMLight - 較重的框架
Caliburn - 似乎有很多的附加功能
實現一個完整的框架看起來像一個很多額外的工作但從長遠來看,這將是值得的,更可測試,更易於維護。
相關問題
- 1. 切換按鈕點擊wpf
- 2. C#WPF WebBrowser按鈕點擊
- 3. C#WPF按鈕點擊
- 4. 點擊時WPF按鈕更改背景
- 5. 更新按鈕上的wpf datagrid點擊
- 6. 按鈕點擊事件不上升wpf
- 7. 在C#代碼中點擊WPF按鈕
- 8. Wpf按鈕第二次點擊
- 9. WPF點擊按鈕滾動查看器
- 10. C#WPF應用隱藏按鈕點擊
- 11. 按鈕點擊排序WPF列表框?
- 12. WPF:點擊按鈕打開新窗口
- 13. 按鈕點擊WPF動畫問題
- 14. WPF Enter Keystroke Simulating點擊按鈕
- 15. 如何點擊WPF ScrollViewer向下按鈕
- 16. 通過按鈕點擊停止Ping.SendAsync WPF
- 17. wpf預防第二次點擊按鈕
- 18. WPF按鈕需要點擊兩次點擊事件
- 19. WPF:如何在點擊另一個按鈕時動畫按鈕?
- 20. WPF可按鈕標籤下的可點擊按鈕
- 21. 點擊按鈕
- 22. 按鈕點擊
- 23. 按鈕點擊
- 24. 點擊按鈕
- 25. WPF按鈕單擊事件
- 26. WPF按鈕單擊事件
- 27. 點擊HTML按鈕
- 28. 點擊jquery按鈕
- 29. 點擊按鈕MKAnnotationView
- 30. javascript,按鈕,點擊
謝謝您的詳細解答。我將不得不研究MVVM模式以更好地理解您的想法。 – Betsy 2011-03-08 12:23:35