在DataGridTemplateColumn中选择的组合框值的超链接

时间:2016-10-18 14:22:49

标签: wpf hyperlink combobox datagrid

我在WPF中使用datagrid。在其中一列中,我需要显示下拉值。当从组合框中选择值时,我希望它成为超链接,以便用户点击之类以打开新页面。 这是图片。在专栏#34; FAULT CLA"显示了组合框。我想要所选的号码" 2"在第一行和数字" 3"在第二行显示为超链接,如其他单元格所示。

Image of table now

我正在使用的代码

<DataGridTemplateColumn x:Name="FaultClass2" Header="Fault Class" >
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <ComboBox x:Name="FaultClass1">
                                        <ComboBoxItem Content="1"></ComboBoxItem>
                                        <ComboBoxItem Content="2"></ComboBoxItem>
                                        <ComboBoxItem Content="3"></ComboBoxItem>
                                    </ComboBox>
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>

如果有人知道该怎么做,请帮助我。

谢谢!

修改

我试过你的答案。请检查以下代码。

<DataGridTemplateColumn CellEditingTemplate="{StaticResource EditTemplate1}" 
                             CellTemplate="{StaticResource NormalTemplate}">
                        </DataGridTemplateColumn>


    <UserControl.Resources>
    <DataTemplate x:Key="EditTemplate1">
        <ComboBox x:Name="FaultClass1">
            <ComboBoxItem Content="1"></ComboBoxItem>
            <ComboBoxItem Content="2"></ComboBoxItem>
            <ComboBoxItem Content="3"></ComboBoxItem>
        </ComboBox>
    </DataTemplate>

    <DataTemplate x:Key="NormalTemplate">
        <TextBlock Margin="2,6" >
              <Hyperlink  Click="Hyperlink_Click" ToolTip="RQ1 Access Rights Required">                               
                        <Run Text="{Binding Path=SelectedItem, ElementName=FaultClass1}"/>
                    </Hyperlink>
        </TextBlock>
    </DataTemplate>
</UserControl.Resources>

我得到的输出是

enter image description here

所以再次缺少超链接。 你能否建议我需要改进超链接代码?

此外,如果我点击第二行的组合框,第一行组合框选择将被清除。

请你指导我。

谢谢!

编辑2

嗨再次,

我做了以下代码更改。

    <UserControl.Resources>
    <DataTemplate x:Key="EditTemplate1">
        <ComboBox x:Name="FaultClass1"  
                  ItemsSource="{Binding ElementName=DSMCal_UserContrl, Path=DataContext.FaultClasses}"  SelectedItem="{Binding ElementName=DSMCal_UserContrl,Path=DataContext.SelectedFaultClass}">
        </ComboBox>
    </DataTemplate>

    <DataTemplate x:Key="NormalTemplate">
        <TextBlock Margin="2,6" >
            <Hyperlink  Click="Hyperlink_Click" ToolTip="RQ1 Access Rights Required">                               
                        <Run Text="{Binding ElementName=DSMCal_UserContrl,Path=DataContext.SelectedFaultClass}"/>
                    </Hyperlink>
        </TextBlock>
    </DataTemplate>
</UserControl.Resources>

选择和超链接现在可以使用。请参阅下面的屏幕截图。

enter image description here

但现在问题是它还将第一行组合的选定值设置为剩余行。

在编辑单元格中,一旦焦点发生变化,就会显示超链接。

请你告诉我如何解决这个问题。

非常感谢!

1 个答案:

答案 0 :(得分:1)

CellEditingTemplate使用DataGrid,如下所示

<DataGridTemplateColumn 
     CellEditingTemplate="{StaticResource EditTemplate1}" 
     CellTemplate="{StaticResource NormalTemplate}"/>

资源

<DataTemplate x:Key="EditTemplate1">
  ...
</DataTemplate>

<DataTemplate x:Key="NormalTemplate">
  ...
</DataTemplate>

CellEditingTemplate会有你的组合框,而CellTemplate会有一个HyperLink来绑定SelectedItem的{​​{1}}。

修改

对于我在下面的解决方案中使用的HyperLink。

ComboBox

或者您可以找到更好的Here