代码之家  ›  专栏  ›  技术社区  ›  sara

如何从WPF中的Gridview列控件读取值

  •  1
  • sara  · 技术社区  · 16 年前

    我正在使用一个WPF应用程序,其中我放置了一个listview控件,该控件有3个gridview列。第一个Gridview列有label控件,其余两个Gridview列有textbox控件。

    现在我的问题是,如果用户在第一个Gridview文本框列中输入一个值,那么第二个Gridview文本框列应该用一些值进行更新。有办法吗。

    我正在用代码隐藏文件中的数据表填充列表视图。

    还有没有任何方法可以获取第一个gridview列中label控件的值。

    提前谢谢 urs Frnd:)

    2 回复  |  直到 16 年前
        1
  •  0
  •   Gishu    16 年前

    据我所见,WPF GridView只是ListView控件的视图模式(look n feel)。。 与WPF中的大多数内容一样,我建议您使用ViewModel模式来完成这项工作。

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

    可以使用ElementName绑定将两个文本框绑定在一起。它们所在的网格列不相关。下面的示例将使textBox2中的文本自动更新为textBox1中输入的文本。

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

    如果第二个文本框需要使用不同的值进行udpate,则可以删除上面的绑定,而不是按编程方式执行:

    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;