2012-09-01 45 views
1

當我在VS 2010中創建一個WPF應用程序並在Grid中放置一個按鈕時,我可以從C#代碼訪問該控件。我有與XAML「名稱」字段中的名稱相同的按鈕類實例變量。 但是,當我使用VS 2012 RC創建WPF項目時,我無法看到控件的實例。 有什麼問題? VS 2010和2012之間是否有默認的項目設置差異?爲什麼我的控件無法在代碼隱藏中訪問?

+0

那麼如何訪問該實例變量。例如:我想將按鈕IsEnabled屬性設置爲false。 – NDeveloper

+0

是的,超級老,但我有隨機控件的問題,直到我關閉並重新打開解決方案,然後intellisense找到它。 – panhandel

回答

3

如果您在討論代碼隱藏,那麼您應該可以訪問按鈕而不需要只需使用它的x:name屬性即可聲明它。現在,如果你正在討論MVVM,那麼你應該在使用按鈕之前設置你的datacontext。

當我使用2012(Release Candidate)時,當我嘗試訪問在xaml中聲明的元素(我必須在沒有它的情況下編寫代碼)時,我沒有得到codebehind cs文件的intellisense,它甚至表示沒有元素該名稱,但項目編譯和工程。所以我建議你嘗試編寫沒有智能感知的代碼並編譯它。

YourButton.IsEnabled = false; 

我想這是默認在VS 2012鼓勵使用MVVM,但這只不過是想法。

+0

我在談論代碼隱藏,問題是我無法使用x:name訪問它。我甚至看到沒有創建任何實例。在VS 2010中它工作得很好,但不是在2012年。 – NDeveloper

+0

@NDeveloper看到我的編輯。 –

+0

奇怪...我試過在其他機器上,它的工作....可能有我的其他PC設置的問題 – NDeveloper

1

您需要確定您沒有以靜態方法訪問該控件。

0

我有同樣的問題的另一個經驗。

當我嘗試從後面的代碼訪問元素時,沒有顯示它的智能感知,我無法使用它的方法。所以我試圖調試這個項目,發現有一個邏輯上的問題,並且不是一個語法錯誤,所以它不會顯示在XAML代碼或任何地方。我修復了它,然後我可以從後面的代碼訪問它。確保您嘗試訪問的元素被正確定義並且具有邏輯上正確的屬性。

<ComboBox x:Name="_days" Selected="0" Width="50"/> 

這是代碼和Selected屬性在邏輯上不正確,因爲沒有在組合框中的元素,你不能選擇第0個元素。

相關問題