簡體   English   中英

如何使用WPF數據網格從DataGridHyperlinkColumn獲取選定的值

[英]How to get selected value from DataGridHyperlinkColumn using wpf data grid

我的數據網格具有一個DataGridHyperlinkColumn,但是單擊該超鏈接時,我沒有得到該值。 我的數據網格是

<datagrid name="datagrid1">
   <column>
      <DataGridHyperlinkColumn Binding="{Binding ID}" Header="ID"  Width="100" >
         <DataGridHyperlinkColumn.ElementStyle>
            <Style TargetType="TextBlock" >
               <EventSetter  Event="Hyperlink.Click" Handler="Hyperlink_Click"  />
            </Style>
         </DataGridHyperlinkColumn.ElementStyle>
      </DataGridHyperlinkColumn>
   </column>
</datagrid>

如何在Hyperlink_Click方法中獲取ID?

您可以像這樣從TextBlockDataContext獲取ID

private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
    //cast sender to TextBlock, and get it's data context
    var dc = ((TextBlock)sender).DataContext;
    //cast data context to your model type, and get the ID property
    var id = ((YourModelType)dc).ID;
}

或者,您可以像其他答案中所建議的那樣設置TextBlock Tag屬性:

<DataGridHyperlinkColumn Binding="{Binding ID}" Header="ID"  Width="100" >
    <DataGridHyperlinkColumn.ElementStyle>
        <Style TargetType="TextBlock" >
            <Setter Property="Tag" Value="{Binding ID}" />
            <EventSetter  Event="Hyperlink.Click" Handler="Hyperlink_Click"  />
        </Style>
    </DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>

然后,您可以在事件處理程序中獲取ID值,如下所示:

private void Hyperlink_Click(object sender, RoutedEventArgs e)
{
    TextBlock textblock = (TextBlock)sender;
    string id = (string)textblock.Tag;
}

您可以使用ID設置超鏈接的Tag屬性,並獲取Tag值,如下所示

 private void  Hyperlink_Click(object sender, RoutedEventArgs e)
        {
            HyperlinkButton hlb = (HyperlinkButton)sender;
            if(hlb !=null){
               var id = hlb.tag
            }

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM