2014-03-03 60 views
0

我創建的類和我要使用的類RTB()的構造,如何將構造函數類型轉換爲'System.Windows.UIElement'(blockUIContainer)?

public class Rtb 
{ 
    public RichTextBox newRTB; 


    public Rtb() 
    { 
     newRTB = new RichTextBox(); 
     newRTB.IsReadOnly = true; 
     newRTB.MouseDoubleClick += new MouseButtonEventHandler(newRTB_MouseDoubleClick); 
    } 

    private void newRTB_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
    { 
     ..... 
    } 
} 

在下面的代碼,我創建RTB()的一個目的,但是此對象不能分配給newBUC.Child ,運行後出現錯誤:無法隱式轉換類型「WpfApplication1.Rtb」到「System.Windows.UIElement」

private void menu_Click(object sender, RoutedEventArgs e) 
    { 
     BlockUIContainer newBUC = new BlockUIContainer(); 
     newBUC.Margin = new Thickness(50, 10, 50, 10); 
     mainMenu.Document.Blocks.Add(newBUC); 
     Rtb newnew = new Rtb(); 
     newBUC.Child = newnew;    
    } 

我試圖用投它,並用「爲」,如下圖所示,但它確實不行。我想我可能需要正確的類型來完成這個任務,我該怎麼做?

newBUC.Child = newnew as BlockUIContainer; 
newBUC.Child = (BlockUIContainer) newnew; 
+2

Rtb應該從'UIElement'繼承 – Alberto

+1

問題是你在這裏真的想做什麼,爲什麼你不在適當的XAML中而是在程序代碼中去做。 WPF不會那樣工作。 –

回答

1

不能添加編輯新建作爲一個孩子,因爲你的類不從的UIElement繼承。但是你可以做的是設置孩子叫newRTB底層的RichTextBox其自UIElement

newBUC.Child = newnew.newRTB; 
+0

謝謝盧卡斯!它完美的作品! – user3339999

+0

我是新來的,沒有足夠的聲望,所以不允許我投你的答案。我也嘗試過這種方式「公共類Rtb:RichTextBox」,但它只能部分工作,newnew可以添加爲孩子,但「IsReadOnly」和「MouseDoubleClick」不起作用,你知道原因嗎? – user3339999

+1

如果你的類直接從RichTextBox繼承,你可以刪除newRTB字段,並在構造函數中設置屬性'this.IsReadOnly = True'等。 –

0

繼承了我的情況,我缺少PresentationFramework.dll 位於程序文件的引用* 86(參考組裝¥微軟\ FRamewrk \ 3.0 \ 或您的Framework版本

這讓我進入我的XAML部分類所有的依賴,因此能夠解決

我希望這也能幫助你的編碼,它爲我。

相關問題