2016-05-11 33 views
0

我有一個wpf項目由visual studio設置。我試圖創建MVP類,但我無法訪問我創建的這些類中的任何xaml屬性(例如textBox1.text或label.Content)無法理解wpf visual studio的設置

他們給我的文件是MainWindow.xaml.cs,MainWindow .xaml和其他一些文件。我可以訪問MainWindow.xaml.cs中的那些xaml屬性。但在我看來,它顯示'textBox' does not exist in the current content。在您的XAML文件的名稱

namespace myApp 
{ 
public interface IView 
{ 
    void clearInput(); 
} 

public class PView: IView 
{ 
    public void clearInput() 
    { 
     textBox1.Text = ""; //error 
     textBox2.Text = ""; 
     textBox3.Text = ""; 
    } 
} 
+1

我猜你會死d做額外的工作和閱讀以瞭解您需要做什麼(開箱即用,不會爲MVP,MVC,MVVM或其他任何東西設置XAML和cs文件)。不確定這是否有助於給定它的年齡:[使用模型 - 視圖 - 演示者(MVP)設計模式來啓用演示互操作性和提高可測試性](https://blogs.msdn.microsoft.com/jowardel/2008/ 09/09 /使用模型視圖演示者mvp設計模式啓用演示互操作性增加可測試性/) – crashmstr

回答

1

你需要給控件(文本框等):感謝任何額外的細節和信息

MainWIndow.xaml.cs:

namespace myApp 
{ 
public partial class MainWindow : Window 
{ 
    private Model model; 
    public MainWindow() 
    { 
     InitializeComponent(); 
     //initialize the storage 
     model= new Model(); 
    } 

    /// <summary> 
    /// clear the textbox for user input 
    /// </summary> 
    private void clearInput() 
    { 
     textBox1.Text = ""; //these works fine 
     textBox2.Text = ""; 
     textBox3.Text = ""; 
    } 

[...] 
} 

view.cs像這樣

<TextBlock Name="textblock1" ..... 

然後在你的代碼文件,你可以訪問textblock1

編輯

然而,這些控件是私人永諾,所以不可見的其他類。爲了讓你需要嘗試這樣的數據公開:

public string TextBlockText 
{ 
    get { return textblock1.Text; } 
} 

,然後在其他類可以使用

EDIT2

或者,您也可以使這些控件像這樣的公衆

<TextBox x:Name="textBox1" x:FieldModifier="public" /> 
+0

是的,我有這個,這就是爲什麼我可以在主窗口中訪問它們.xaml.cs。但我不能在我創建的view.cs中訪問它們 – user308553

+0

請參閱編輯 - 我認爲這就是你在 –

+0

之後所以我必須在我的MainWindow.xaml.cs中創建這些方法才能使view類訪問它?它似乎凌亂。也許我沒有正確地說出我的問題,我做了一個編輯,你可以看看嗎?謝謝 – user308553