【问题标题】:How to access row data from a MouseLeftButtonDown event on a textblock, in a gridview如何在网格视图中从文本块上的 MouseLeftButtonDown 事件访问行数据
【发布时间】:2013-09-17 23:05:26
【问题描述】:

我正在尝试修改从数据库中提取的网格视图中的行中的数据。

数据被绑定到每个 gridview 列,如下所示。

<GridViewColumn Header="Status" Width="120" util:GridViewSort.PropertyName="Status">
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding Path=Status}" FontWeight="Bold" MouseLeftButtonDown="TextBlock_MouseLeftButtonDown_1"/>
        </DataTemplate>
    </GridViewColumn.CellTemplate>
</GridViewColumn>

我在文本块上有一个 MouseLeftButtonDown 事件,当我单击特定文本时会触发该事件。

private void TextBlock_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
{
    MessageBox.Show("Hello");
}

我遇到的问题是我找不到访问行数据的方法(例如 id 或行中的文本)。

有没有办法从点击事件中访问所有行数据?

谢谢

【问题讨论】:

  • TextBox 的 DataContext 应该保存整行的信息。
  • 那太棒了。我可以通过发送方获取数据上下文,但是如何获取其中的数据呢?感谢您的帮助。
  • 将其转换为原始类型。
  • 感谢您的帮助,我知道了

标签: c# wpf gridview mouseleftbuttondown


【解决方案1】:

试试这个:

  private void TextBlock_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
    {
        TextBlock textBlock = (sender as TextBlock);
        string text = textBlock.Text;// Text in the TextBlock
        object datacontext = textBlock.DataContext; // datacontext, Entire row info
    }

【讨论】:

  • -1 用户没有询问如何访问TextBlock.Text 属性值。
  • 感谢您的回答,它让我离我需要的地方更近了。我还希望从行中的其他字段获取数据,例如隐藏的 ID 行等。
  • 这一行返回给你行中的所有字段 - object datacontext = textBlock.DataContext;
  • 啊,我知道了,谢谢大家的帮助。
  • @DiscoDamo 欢迎您,很高兴它对您有所帮助。
【解决方案2】:

您不应在 XAML 文件后面的代码中执行与 UI 不直接相关的任何操作。您应该将点击事件绑定到您的模型或视图模型的命令(绑定到您的单元格的实体,在您的情况下为包含“状态”属性的实体);该实体应该更容易访问“行数据”。

【讨论】:

  • 作为非母语人士,我认为我误解了原始数据的行数据:/
  • 感谢您的帮助。我的术语可能不是最好的,我对 WPF 很陌生。基本上我在一个网格中有 6 行。所有都包含文本块。当我单击一个文本块时,我想获取同一行中其他文本块中包含的文本。我可以使用 sender 对象访问我单击的块的文本,但我无法找到进入该行其余部分的文本块的方法。
猜你喜欢
  • 2013-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
相关资源
最近更新 更多