我对WPF来说很新,有很多东西需要学习,我想我会慢慢到达那里。我有一个DataGrid用于显示和用户输入,这是一个非常棘手的网格,因为它是整个应用程序的主要焦点。我有一些只读的列,我用CellStyle Setter将KeyboardNavigation.IsTabStop设置为False,以保持用户输入焦点在重要的列上,并且工作正常。我想让一些只读列成为显示工具提示的超链接,但没有得到关注,但我正在努力编写能够同时满足所有三项要求的XAML。WPF DataGrid超链接外观和行为
其中一列是指示行上的项目是否有任何注释。我已经使用了下面的XAML显示在一个DataGridTemplateColumn和工具提示显示实际的音符细胞HasNotes属性,在Notes属性:
<DataGridTemplateColumn x:Name="NotesColumn" Header="Notes">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding HasNotes, Mode=OneWay}">
<TextBlock.ToolTip>
<TextBlock Text="{Binding Notes}" MaxWidth="300" TextWrapping="Wrap" />
</TextBlock.ToolTip>
</TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellStyle>
<Style>
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
</Style>
</DataGridTemplateColumn.CellStyle>
</DataGridTemplateColumn>
这工作正常,但我想使它成为一个超链接相反,当用户单击单元格内容时,用户可以使用Notes做些事情。
我有另一列是一个DataGridHyperlinkColumn用于在超链接上显示一个度量单位,点击时用户可以更改单位。 (我这样做的原因,而不是一个ComboBox,例如,因为我想要用户能够更改我想要使界面的单位,这是一个非常慎重的行为来改变单位,而不是意外的事情)。下面的XAML把超链接栏上用XAML超链接列单位
<DataGridHyperlinkColumn x:Name="ResultUnitLink" Binding="{Binding Path=Unit.Code}" Header="Unit" Width="Auto" IsReadOnly="True">
<DataGridHyperlinkColumn.CellStyle>
<Style>
<Setter Property="KeyboardNavigation.IsTabStop" Value="False"/>
</Style>
</DataGridHyperlinkColumn.CellStyle>
<DataGridHyperlinkColumn.ElementStyle>
<Style>
<EventSetter Event="Hyperlink.Click" Handler="ChangeUnit" />
</Style>
</DataGridHyperlinkColumn.ElementStyle>
</DataGridHyperlinkColumn>
的一个问题是,IsTabStop =假不出现工作,通过电网的互联,当我的超级链接栏仍然接收重点,不像其他专栏,我用setter来更改IsTabStop。如果推动推动我可以生活,但我宁愿不要。
我真正想从这两列中得到的结果是两个外观/行为的合并,即数据显示在超链接上的列,其中TabStop = False,当鼠标悬停时显示不同属性的工具提示。
谁能帮告诉我如何获取实现了如下的列:
- 超链接显示一个属性
- 工具提示显示不同的属性
- IsTabStop =假,实际上与一起使用时,超链接
在此先感谢任何人可以提供帮助。
棒极了!管理把它放在我的DataGrid中的两列,整理工具提示并停止它接收焦点,它的外观和行为完全像超链接。正是我在找什么。非常感谢。 – PGibsonCoUk