0

这是我使用 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文件只是 .cs 文件的交互逻辑MainWindow。那么为什么我不知道如何配置我的 TextBox 来显示数据_grids呢?

我已经摆弄了x:Name, x:Reference, Window.Resources, DataContext,Binding等等,但我还没有找到适用于此的指南。这可能是因为我仍然不了解 WPF 的各个方面。但是我在这里做错了什么?

(或者,我会对不会让我的大脑渗出耳朵的 WPF 教程感到满意。)

4

2 回答 2

1

您已_grids在 C# 中声明,但未将其添加到可视化树中。

最简单的方法是在 XAML 中声明对象(尽管我不能 100% 确定 aGridSet是什么——我找不到任何关于它的文档)。因此,如果它很简单Grid,您将拥有:

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

通过命名它,您可以在代码中访问它:

MyGrid.Children.Add(something);

要使用绑定,您必须设置DataContext窗口的。最简单的方法是:

this.DataContext = this;

在你的构造函数中。

于 2013-02-05T20:46:22.443 回答
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";
            }
        }
    }
}
于 2013-02-05T21:00:05.357 回答