2013-02-05 39 views
0

這是我第一天與WPF。有趣!WPF訪問自我

我目前有一個WPF應用程序,打開/返回文件OpenFileDialog。我有一個現有的腳本可以解構並提取數據。我需要的是能夠訪問該數據(我猜綁定它)並將其顯示在XAML中的元素中。我一直無法弄清楚如何做到這一點。

所以這是我的設置。

MainWindow.xaml.cs

namespace GridView 
{ 
    public partial class MainWindow 
    { 
     private GridSet<byte> _grids; 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Open_OnClick(object sender, RoutedEventArgs e) 
     { 
      var openDialog = new OpenFileDialog(); 
      if (openDialog.ShowDialog().Value) 
      { 
       //Populate _grids with data 
      } 
     } 
    } 
} 

MainWindow.xaml

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     mc:Ignorable="d" x:Class="GridView.MainWindow" 
     Title="Grid View" Width="800" Height="600" WindowStartupLocation="CenterScreen"> 

    <DockPanel> 

... 
    "Open_OnClick" here 
... 

    <TextBox/> 

    </DockPanel> 
</Window> 

正如你所看到的,的.cs文件只是針對的交互邏輯MainWindow。那麼爲什麼我不能弄清楚如何配置我的TextBox在_grids中顯示數據?

我已經擺弄x:Namex:ReferenceWindow.ResourcesDataContextBinding,等等,但我還沒有找到一個指南還已應用於此。這可能是因爲我仍然不理解WPF的每一個方面。但是我在這裏做錯了什麼?

(我會或者滿足於WPF的教程,這並不使我的大腦滲出我的耳朵。)

+0

變化''到'<文本框名稱= 「myTextBox」/>',那麼你就可以在你的'主窗口訪問'TextBox'。 xaml.cs'用'myTextBox.Text =「Hello World設置文本。」;'在你的構造函數中,在'InitializeComponent();'放'this.DataContext = this;'。 –

回答

1

您已經聲明在C#_grids,但它不會添加到可視化樹。

最簡單的方法是在XAML中聲明對象(雖然我不是100%確定GridSet是什麼 - 我找不到任何文檔)。所以,如果這是一個簡單的Grid你必須:

<DockPanel> 
    <Grid x:Name="MyGrid" /> 
</DockPanel> 

通過命名它,你可以在代碼中訪問它:

MyGrid.Children.Add(something); 

要使用綁定您必須設置窗口的DataContext。最簡單的方法是:

this.DataContext = this; 

在你的構造函數。

+0

啊,甜美! GridSet只是讓我以一種乾淨,自定義的方式與一堆網格進行交互的一種方式。重點是能夠在兩個文件之間進行通信,並且您回答了這個問題。 – Joseph

0

你想使用一個按鈕?

XAML:

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" x:Class="GridView.MainWindow" 
    Title="Grid View" Width="800" Height="600" WindowStartupLocation="CenterScreen"> 

    <DockPanel> 
    <Grid> 
     <Button x:Name="Open" Click="Open_OnClick" /> 

     <TextBox x:Name="tbDisplay"/> 
    </Grid> 
    </DockPanel> 
</Window> 

C#

namespace GridView 
{ 
    public partial class MainWindow 
    { 
     private GridSet<byte> _grids; 

     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void Open_OnClick(object sender, RoutedEventArgs e) 
     { 
      var openDialog = new OpenFileDialog(); 
      if (openDialog.ShowDialog().Value) 
      { 
       //Populate _grids with data 
       tbDisplay.Text = "foo"; 
      } 
     } 
    } 
}