簡體   English   中英

WPF UserControl繼承另一個UserControl

[英]WPF UserControl inheriting another UserControl

我試圖以WPF用戶控件如何繼承WPF用戶控件中提到的方式繼承WPF中的用戶控件。

namespace DMS.Presentation
{
    /// <summary>
    /// Interaction logic for WorkSpaceViewControl
    /// </summary>
    public abstract class WorkSpaceViewControl : UserControl
    {
        public WorkSpaceViewControl()
        {
            InitializeComponent();
        }

    private void InitializeComponent()
        {

        }
    }  

}

到目前為止,代碼沒有給出任何錯誤。 但是當我在新的usercontrol中繼承它時:

namespace DMS.Presentation
{
    /// <summary>
    /// Interaction logic for AnimalWorkSpaceView.xaml
    /// </summary>
    public partial class AnimalWorkSpaceView : WorkSpaceViewControl
    {
        public AnimalWorkSpaceView()
        {
            InitializeComponent();
        }

    }

}

它的XAML文件是:

//I have tried both WorkSpaceViewControl:UserControl and UserControl:WorkSpaceViewControl here


<UserControl:WorkSpaceViewControl x:Class="DMS.Presentation.WorkSpaceViewControl"
             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:local="clr-namespace:DMS.Presentation"
             xmlns:WorkSpaceViewControl="clr-namespace:DMS.Presentation"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">

</UserControl:WorkSpaceViewControl>

我收到一條消息,指出不存在部分修飾符。 存在另一個WorkSpaceViewControl的部分聲明。 那么我應該如何實施它,哪里出了問題呢? 自一月份以來,由於繼承瓶頸,我的整個項目陷入了困境。 幫助將不勝感激。

根據您引用的答案,派生的UserControl XAML應該看起來像這樣:

<local:WorkSpaceViewControl x:Class="DMS.Presentation.AnimalWorkSpaceView"
    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:local="clr-namespace:DMS.Presentation"
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300">
</local:WorkSpaceViewControl>

您已經聲明了兩個不同的XML名稱空間,分別是localWorkSpaceViewControl ,它們都引用了"clr-namespace:DMS.Presentation" 您只需要其中之一(因此我保留在local ,這更加慣用了),並且您需要使用名稱空間來限定類型名稱WorkSpaceViewControl

因此,XAML聲明開始於<local:WorkSpaceViewControl ...

另外,派生類的x:Class值必須是派生類,而不是基類。 因此,而不是"DMS.Presentation.WorkSpaceViewControl" ,應被設置為"DMS.Presentation.AnimalWorkSpaceView" ,如上圖所示。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM