2013-02-13 85 views
0

這一切都始於嘗試使用數字文本框。這部分是無關的,但這就是爲什麼我創建了以下類。 (順便說一句,使用VS 2012 Express,WPF,C#代碼隱藏)。嘗試從代號隱藏訪問xaml「local:」控制名稱時出錯

using System; 
using System.Windows.Controls; 

    namespace Herculese 
    { 
     public class IntBox : TextBox 
     { 
      <!-- irrelevant code here--> 
     } 
    } 

到目前爲止,這麼好。我建立這成爲我繼續在XAML中使用控制:

<local:IntBox Name="txtBox_heightft" Width="60" TextChanged="txtBox_Numeric_Changed" /> 
在我想指的是使用「txtBox_heightft.Text」文本框中的文本後面我的代碼

然後,我m告知「名稱'txtBox_heightft'在當前上下文中不存在」。這使我陷入了無盡的困境,因爲如果我在xaml中將「local:IntBox」更改爲「TextBox」,它會正常工作,但當然它是一個常規文本框,而不是我的修改版本。我是否需要以某種方式在代碼隱藏中添加對類的引用?這是我第一次嘗試以這種方式使用類,因爲我從來不需要默認不提供的功能。

+0

這是否幫助http://social.msdn.microsoft。 com/Forums/en/wpf/thread/3ffb11a7-e1b0-454b-96bf-d2463e89f8ba – V4Vendetta 2013-02-13 09:16:18

+0

我不這麼認爲。 'xmlns:local =「clr-namespace:Herculese」xmlns:System =「clr-namespace:System; assembly = mscorlib」x:Class =「Herculese.MainWindow」'包含在我的xaml中。我想這個問題是我需要包含在我的C#中的東西。 xaml不會拋出任何異常。 – 2013-02-13 09:24:15

+0

很好的問題,其實。我無法在沒有幾個小時的搜索的情況下自己找到這些東西。 WPF綁定和屬性是一個黑洞。 – 2016-08-20 19:22:43

回答

1

的問題是,您使用的名稱作爲一個依賴屬性,你需要使用X:NAME =「txtBox_heightft」作爲擴展屬性:)

+0

事實上,我只是想通了這一點剛纔,同時通過網頁在谷歌搜索結果頁面閱讀笑的一件事我沒有找到的是爲什麼這是當我沒有做一個普通文本框的情況下? – 2013-02-13 10:30:46