WPF表单中动态创建按钮的事件处理程序

时间:2011-03-19 16:35:23

标签: wpf

我尝试创建一个带有gridview的WPF表单,其中包含一个“按钮列”,如下所示:http://rghost.ru/4832825.view

我正在通过为列指定DataTemplate来创建“按钮列”。

现在我遇到了一个问题:我需要编写按钮事件处理程序,但我不明白,如何确定列中按下了哪个按钮?如何在不使用按钮的Tag字段的情况下确定这一点?

这是我的代码。 XAML:

<Window x:Class="ListViewSample.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="317" Width="603">

<Window.Resources>
    <DataTemplate x:Key="ButtonInColumn">
        <Button Content="Test" Height="20" Name="button1" Width="40"  Click="MenuItem_Click"/>
    </DataTemplate>

</Window.Resources>

<Grid>
    <ListView Margin="10,75,12,38" Name="ListView1">
        <ListView.View>
            <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Authors">
                <!-- Add GridView Columns -->
                <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Path=Name}"/>
                <GridViewColumn Header=" Age" Width="60" CellTemplate="{StaticResource ButtonInColumn}" />
                <GridViewColumn Header=" Book" Width="250" DisplayMemberBinding="{Binding Path=Book}" />
                <GridViewColumn Header=" MVP" Width="50" DisplayMemberBinding="{Binding Path=Mvp}" />
                <GridViewColumn Header=" 123" Width="50" DisplayMemberBinding="{Binding Path=q123}" />
            </GridView>
        </ListView.View>
    </ListView>
</Grid>
</Window>

P.S。抱歉我的英文不好

1 个答案:

答案 0 :(得分:2)

在事件处理程序中,您有object Sender。此发件人是按钮,您可以执行以下操作:

var btn = sender as Button;
var dataItem = btn.DataContext as <the original data item class>

这样你就可以引用原始数据项,并可以从那里推断出任何东西..