c# – 如何使UserControls的代码隐藏继承基类?
发布时间:2020-12-16 01:32:41 所属栏目:百科 来源:网络整理
导读:我有一个页面管理器,它保存一组页面(usercontrols),将自己发送到每个页面,因此可以随时调用其SwitchPage方法,使我能够将链接从一个页面放到另一个页面.这很好用,可以让我快速菜单等. public partial class PageManager : UserControl{ private Dictionarystr
我有一个页面管理器,它保存一组页面(usercontrols),将自己发送到每个页面,因此可以随时调用其SwitchPage方法,使我能够将链接从一个页面放到另一个页面.这很好用,可以让我快速菜单等.
public partial class PageManager : UserControl { private Dictionary<string,UserControl> Pages = new Dictionary<string,UserControl>(); private string defaultPageIdCode = "page1"; private UserControl currentPage; private string currentPageIdCode; public PageManager() { InitializeComponent(); LoadPages(); SwitchPage(defaultPageIdCode); } private void LoadPages() { Pages.Add("page1",new Page1(this)); Pages.Add("page2",new Page2(this)); } public void SwitchPage(string pageIdCode) { currentPageIdCode = pageIdCode; currentPage = Pages[pageIdCode]; PageArea.Content = currentPage; } } 但是,每个页面(UserControl)都有重复的功能,例如在内部保存PageManager对象,我想将其放在基类中: 的Page1.xaml: <UserControl x:Class="TestPageManager23434.Page1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel Background="White" Width="400" Height="400" > <TextBlock Text="this is page1"/> <Button Content="go to page 2" Click="Button_Click" HorizontalAlignment="Left" Width="200" Height="30" /> </StackPanel> </UserControl> Page1.xaml.cs: public partial class Page1 : UserControl { private PageManager pageManager; public Page1(PageManager pageManager) { this.pageManager = pageManager; InitializeComponent(); } private void Button_Click(object sender,System.Windows.RoutedEventArgs e) { pageManager.SwitchPage("page2"); } } Page2.xaml: <UserControl x:Class="TestPageManager23434.Page2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <StackPanel Background="White" Width="400" Height="400" > <TextBlock Text="this is page2"/> <Button Content="go back to page 1" Click="Button_Click" HorizontalAlignment="Left" Width="250" Height="30" /> </StackPanel> </UserControl> Page2.xaml.cs: public partial class Page2 : UserControl { private PageManager pageManager; public Page1(PageManager pageManager) { this.pageManager = pageManager; InitializeComponent(); } private void Button_Click(object sender,System.Windows.RoutedEventArgs e) { pageManager.SwitchPage("page1"); } } 如何让每个UserControl继承一个基类?它不起作用,因为每个UserControl都有不能继承的XAML.如果我尝试从继承UserControl的普通类继承,那么它告诉我:
解决方法
而不是将根元素声明为UserControl,而是将其声明为派生类.您还需要指定命名空间,例如
<local:PageBase x:Class="TestPageManager23434.Page2" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:TestPageManager23434"> </local:PageBase> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |