0

TextBlock として定義され、ViewModel の文字列にバインドされた ListView に GridView セルがあります。テキストの一部をハイパーリンクに変更し、一部をプログラムで異なる色に変更できるようにしたいと考えています。

GridView セルの XAML は次のとおりです。

<GridViewColumn.CellTemplate>
    <DataTemplate>
        <Border BorderThickness="2" BorderBrush="#dfdfdf" HorizontalAlignment="Stretch">
            <TextBlock Text="{Binding Data}" Margin="3"/>    
        </Border>
    </DataTemplate>
</GridViewColumn.CellTemplate>

そして、現時点での外観は次のとおりです。

WPF リストビュー セル

バインドされるテキストの例は次のとおりです。

<color:#ff0000>Test item</color>
Test item 2
<link:http://www.google.com>Test hyperlink</link>

バインドされたテキストを解析して必要な情報を引き出すための正規表現に問題はありませんが、TextBlock を別の色に変更してハイパーリンクを追加するにはどうすればよいでしょうか?

前もって感謝します

4

2 に答える 2

1

TextBlock 内に複数のRun要素を配置して、好きなようにスタイルを設定できます。

これはMVVMをサポートするハイパーリンクの例です:)

<GridViewColumn.CellTemplate>
    <DataTemplate>
        <Border BorderThickness="2" BorderBrush="#dfdfdf" HorizontalAlignment="Stretch">
        <TextBlock  Margin="3">
            <Run Text="{Binding Data}" />
            <Run Text="Some more data" Background="Red" />
            <Run Text="Click Me" Foreground="Blue" TextDecorations="Underline" >
                <i:Interaction.Triggers>
                   <i:EventTrigger EventName="MouseDown">
                      <local:EventToCommand Command="{Binding LinkClickCommand, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}" />
                   </i:EventTrigger>   
                 </i:Interaction.Triggers>

            </Run>
        </TextBlock>
        </Border>
    </DataTemplate>
</GridViewColumn.CellTemplate>

注: Interaction.Triggersare fromSystem.Windows.InteractivityおよびEventToCommandfrom MVVMLight です。

于 2012-12-16T17:29:05.657 に答える
0

Blachshmaの答えに似ていますが、Runオブジェクトと一緒にハイパーリンクを使用しています:

<TextBlock>
  <Run Text="{Binding Data}" />
  <Run Text="Some more data" Background="Red" />
  <Hyperlink Command="{Binding Path=Command}">
    <TextBlock Text="{Binding Path=Text}"/>
  </Hyperlink>
</TextBlock>

明らかに、ハイパーリンクにバインドするCommandとプロパティがあります。Textまったく同じように見えますが、コマンドの述語にも応答しますCanExecute(ハイパーリンクは灰色になります)。

于 2012-12-16T19:42:24.250 に答える