如何获得DataGrid列值当按钮被从里面DataGrid中点击?

问题描述 投票:1回答:3

我有一个像下面一个Silverlight的DataGrid

<sdk:DataGrid Name="DataGridDream" AutoGenerateColumns="False" HeadersVisibility="None" Background="Yellow" HorizontalAlignment="Center" Height="100" VerticalAlignment="Center" Width="120"  >

        <sdk:DataGrid.Columns >
                <sdk:DataGridTextColumn Binding="{Binding By}"   >

                </sdk:DataGridTextColumn>
                <sdk:DataGridTextColumn Binding="{Binding UserName}" >

                </sdk:DataGridTextColumn>
                <sdk:DataGridTemplateColumn>
                    <sdk:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <Button Name="ButtonSave" Content="Take" Click="ButtonSave_Click">

                            </Button>
                        </DataTemplate>
                    </sdk:DataGridTemplateColumn.CellTemplate>
                </sdk:DataGridTemplateColumn>
            </sdk:DataGrid.Columns>
        </sdk:DataGrid>

和我有内部的DataGrid按钮的Click事件,

private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
    int Value = // Value of the UserId column when a button is clicked on that row
}

怎么做 ?

c# wpf silverlight datagrid
3个回答
2
投票

这将让你点击行UserName属性的值:

private void ButtonSave_Click(object sender, RoutedEventArgs e)
{
   string userName = (((Button)sender).DataContext as ModelClass).UserName;
}

ModelClass是你的财产所在,即底层源类的绑定。


1
投票

您可以从DataGrid中的选定项目尝试这样的事:

private void ButtonSave_Click(object sender, RoutedEventArgs e)
{        
    var row = (int)DataGridDream.SelectedItem;
}

0
投票

您可以获取当前行值的动态对象。您可以使用该对象访问网格行中的所有值。

迈克·施瓦茨的solution的修改后的版本将是

    private void ButtonSave_Click(object sender, RoutedEventArgs e)
    {
        dynamic row = DataGridDream.SelectedItem;
    }

您还可以得到该行的值作为罗希特大桶suggested。但是,通过使用动态关键字,您就不必声明Model类。

    private void ButtonSave_Click(object sender, RoutedEventArgs e)
    {
       dynamic row = ((Button)sender).DataContext;
    }

在此之后,你可以像这样访问的用户名

    var UserName = row.UserName;
© www.soinside.com 2019 - 2024. All rights reserved.