【问题标题】:How to read values from Gridview columns controls in WPF如何从 WPF 中的 Gridview 列控件中读取值
【发布时间】:2010-10-18 17:13:52
【问题描述】:

我有一个 listview 控件,它有 3 个 gridview 列。我正在使用来自代码隐藏文件的数据表填充列表视图。第一个 Gridview 列有一个标签控件,其余 2 个 gridview 列有文本框控件。

我的问题是,如果用户在第一个 Gridview 文本框列中输入一个值,则第二个 gridview 文本框列应该更新为某个值。有没有办法做到这一点。

还有什么方法可以获取第一个gridview列中标签控件的值。

【问题讨论】:

  • 你如何填充 GridView 我的朋友... WPF 数据绑定?

标签: wpf gridview textbox


【解决方案1】:

您可以使用 ElementName 绑定将两个 TextBox 绑定在一起。他们所在的 Grid 列是无关紧要的。下面的例子会导致 textBox2 中的文本自动更新为 textBox1 中输入的文本。

    <TextBox Text="TextBox" Name="textBox1" />
    <TextBox Text="{Binding ElementName=textBox1, Path=Text}" Name="textBox2"/>

如果需要使用不同的值更新第二个文本框,您可以删除上述绑定,而是以编程方式进行:

textBox2.Text = textBox1.Text + " some text";

要获取 Label 控件的值,您需要为其指定一个名称,然后您可以使用该名称在代码隐藏文件中访问它。

XAML:

<Label Name="myLabel" Content="Label"/>

C#:

 // Assuming you have assigned text content to the Label as in the above XAML.
 string labelContent = myLabel.Content as string; 

【讨论】:

  • 这只会将 textbox2 设置为 textbox1 中输入的值。我认为 OP 希望根据 textbox1 的值计算另一个值并将其显示在 textbox2 中
【解决方案2】:

据我所知,WPF GridView 只是 ListView 控件的一种视图模式(外观)。 与 WPF 中的大多数事情一样,我建议您使用 ViewModel 模式来执行此操作。

  • 这意味着您已经为 Grid 中的每一行创建了一个 ViewModel 对象。真正的模型将是您的 DataTable 行。 View 模型以来自真实模型的数据为种子。即,您从 DataTable 中的每一行创建一个新的 ViewModel 实例。然后使用 ViewModel 对象填充 Grid
  • View 模型公开了您需要在实际视图中显示的每个值的属性。因此,在这种情况下,您的 ViewModel 将公开 3 个属性(对于每一列)。
  • 连接您的 UI 列以绑定到 ViewModel 中的相应属性。
  • 现在,您的 ViewModel.Property1 将包含在更改时使用正确的计算值更新 Property2 的逻辑。它们都应该触发 PropertyChanged 通知,并且 GridView 应该反映两个单元格中的更新值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多