我在WPF中使用datagrid。在其中一列中,我需要显示下拉值。当从组合框中选择值时,我希望它成为超链接,以便用户点击之类以打开新页面。 这是图片。在专栏#34; FAULT CLA"显示了组合框。我想要所选的号码" 2"在第一行和数字" 3"在第二行显示为超链接,如其他单元格所示。
我正在使用的代码
<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>
我得到的输出是
所以再次缺少超链接。 你能否建议我需要改进超链接代码?
此外,如果我点击第二行的组合框,第一行组合框选择将被清除。
请你指导我。
谢谢!
编辑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>
选择和超链接现在可以使用。请参阅下面的屏幕截图。
但现在问题是它还将第一行组合的选定值设置为剩余行。
在编辑单元格中,一旦焦点发生变化,就会显示超链接。
请你告诉我如何解决这个问题。
非常感谢!
答案 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