私はWPFにはかなり新しくなっています。学ぶことがたくさんあり、ゆっくりとそこに着いていると思います。私は表示とユーザーの入力に使用されるDataGridを持っていますが、それはアプリケーション全体の主な焦点であるため、非常にトリッキーなグリッドです。私はいくつかの列が読み込み専用であり、CellStyle Setterを使用してKeyboardNavigation.IsTabStopをFalseに設定して、ユーザー入力を重要な列に集中させ、うまく動作させるようにしました。読み込み専用の列をツールチップに表示してフォーカスを取得しないハイパーリンクにしたいのですが、同時に3つの要件をすべて満たすXAMLを作成するのに苦労しています。WPF DataGridハイパーリンクの外観と振る舞い
列の1つは、行の項目に注釈があるかどうかを示すことです。私は、Notesプロパティで、実際のノートを表示DataGridTemplateColumn中とツールチップ上のセル内HasNotesのプロパティを表示するには、次のXAMLを使用しています
<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>
正常に動作しますが、私はそれハイパーリンクしたいと思いますセルの内容をクリックするとノートで何かを行うことができます。
私は、ハイパーリンクに測定単位を表示するために使用される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 = Falseの場合、グリッドをタブ移動するとき、私のハイパーリンク列はまだ受けて、動作するように表示されないということですIsTabStopを変更するためにセッターを使用した他の列とは異なります。押しが押されると私はそれで生きることができたが、むしろそうはしたくない。
私が実際に両方の列から欲しいのは、2つの外観/ビヘイビア、つまりTabStop = Falseのハイパーリンク上にデータが表示され、上に置かれたときに別のプロパティのツールチップを表示する列の合併です。
誰もが次のことを実現し、列を取得する方法を私に助言するのに役立ちます。で使用した場合、実際に動作することを
- ハイパーリンクハイパーリンク
事前にお手伝いいただける方に感謝します。
それを私のDataGridの2つの列に配置し、ツールチップを整理してフォーカスを受け取るのをやめ、ハイパーリンクのように見えて振る舞います。まさに私が探していたもの。どうもありがとう。 – PGibsonCoUk