2012-04-04 19 views
3

我看到其他人在其他問題中詢問這個錯誤信息,但我似乎對自己解決這個問題的方法不夠了解。我由具有WPF用戶控件部分聲明不能指定不同的基類?

public partial class EnterNewRequest : UserControl 

創造了這個錯誤,但再後來我想一個方法添加到用戶控件,所以我用繼承來堅持在那裏,因爲我需要重寫(不能使用延長這種方法)。但是現在我的用戶控件很不高興,我不確定我需要更改xaml中的內容。 UserControl更改塊位於名稱空間RCO_Manager中。這是我的xaml:

<UserControl x:Class="RCO_Manager.EnterNewRequest" 
     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" 
+3

什麼是錯誤?我從來沒有聽說過'WindowIsUpsetException'。看起來很可怕! – 2012-04-04 12:22:55

+1

@Baboon在msdn上檢查它,它基於WindowsCantReadMyMindAndMagicallyFixThis類。 – cost 2012-04-04 12:26:55

+0

什麼是'InnerException'? – 2012-04-04 12:33:35

回答

7

我在使用Windows Phone時遇到同樣的問題。我不記得確切的例外情況,但是您可以看到XAML here on GitHubthe page code herebase page code here(我的是基頁,而不是基本控件)。我需要添加一個新的XAML命名空間和改變<UserControl/>聲明:

代碼假設

namespace RCO_Manager 
{ 
    // Inherits **Base**UserControl, not UserControl 
    public partial class EnterNewRequest : BaseUserControl 
    { 
     // Magic goes here 
     ... 
    } 
} 

XAML

<local:BaseUserControl 
    xmlns:local="clr-namespace:RCO_Manager" 
    x:Class="RCO_Manager.EnterNewRequest" 

旁註

根據Baboon,在指定XAML中的基類後,您不需要在代碼隱藏中指定它,因此您可以更改代碼隱藏以顯示以下內容。我現在無法驗證它,但您可以在完成工作後嘗試嘗試。

public partial class EnterNewRequest // Don't specify BaseUserControl here 
{ 
    ... 
+0

順便說一句,在XAML和代碼隱藏中聲明基類是多餘的。 – 2012-04-04 12:43:16

+0

至少在Windows Phone中,當我不僅將BaseUserControl放在代碼中而是不使用XAML時,我得到了相同的'WindowIsUpsetException'。也許它會解決他的問題呢?我會更新我的回答,說我有同樣的問題。 – 2012-04-04 12:44:40

+0

您可以在代碼隱藏中將其刪除。 – 2012-04-04 12:59:38

相關問題