1. 程式人生 > >WPF 獲取ListView中列新增LinkButton按鈕,點選按鈕的當前行的ID值

WPF 獲取ListView中列新增LinkButton按鈕,點選按鈕的當前行的ID值

前臺

     把ID值繫結到Tag屬性中    (Tag="{Binding Path=id}")
        <DockPanel  HorizontalAlignment="Left" Name="dpBody" VerticalAlignment="Top"  Margin="10,160,0,0" Width="534">
            <ListView Name="lvSelfDefine" ItemsSource="{Binding Path=Table}" Height="161"   Width="532" SelectionChanged="lvSelfDefine_SelectionChanged">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="GVId" DisplayMemberBinding="{Binding Path=id}" Width="0" />
                        <GridViewColumn Header="操作"  Width="100">
                             <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <StackPanel Orientation="Horizontal">

                                        <Button  Content="刪除" Tag="{Binding Path=id}" Cursor="Hand" Margin="5,5,0,0" Name="btnDelete" Grid.Column="2"  Click="btnDelete_Click">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <TextBlock TextDecorations="Underline" Name="tbDelete" > 
                                                        <ContentPresenter />
                                                    </TextBlock>
                                                </ControlTemplate>
                                            </Button.Template>
                                            <Button.Style>
                                                <Style TargetType="Button">
                                                    <Setter Property="Foreground" Value="Blue" />
                                                    <Style.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="true">
                                                            <Setter Property="Foreground" Value="Red" />
                                                        </Trigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Button.Style>
                                        </Button>

                                        <Button  Content="執行" Tag="{Binding Path=id}"  Cursor="Hand" Height="20" Width="35" Margin="10,5,0,0" Name="btnRun" Grid.Column="2"  Click="btnRun_Click">
                                            <Button.Template>
                                                <ControlTemplate TargetType="Button">
                                                    <TextBlock TextDecorations="Underline" Name="tbRun" > 
                                                <ContentPresenter />
                                                    </TextBlock>
                                                </ControlTemplate>
                                            </Button.Template>
                                            <Button.Style>
                                                <Style TargetType="Button">
                                                    <Setter Property="Foreground" Value="Blue" />
                                                    <Style.Triggers>
                                                        <Trigger Property="IsMouseOver" Value="true">
                                                            <Setter Property="Foreground" Value="Red" />
                                                        </Trigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </Button.Style>
                                        </Button>

                                     </StackPanel>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                        <GridViewColumn Header="名稱" DisplayMemberBinding="{Binding Path=name}" Width="130" />
                    </GridView>
                </ListView.View>
            </ListView>
        </DockPanel>

後臺讀取Tag 中的ID值

 /// <summary>
        /// 刪除當前行
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            int selectedIndex = int.Parse((sender as Button).Tag.ToString());
            DataRow dr = ((DataRowView)this.lvSelfDefine.Items[selectedIndex]).Row;
            string nodeID = dr["id"].ToString();
        }