133

WPFでは、オブジェクトの詳細に移動するハイパーリンクを作成し、ハイパーリンクのテキストをオブジェクトの名前にします。今、私はこれを持っています:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">Object Name</Hyperlink></TextBlock>

ただし、「オブジェクト名」をオブジェクトの実際の名前にバインドする必要があります。私はこのようなことをしたいと思います:

<TextBlock><Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}" Text="{Binding Path=Name}"/></TextBlock>

ただし、ハイパーリンククラスには、データバインディングに適したテキストまたはコンテンツプロパティ(つまり、依存関係プロパティ)がありません。

何か案は?

4

3 に答える 3

224

奇妙に見えますが、機能します。アプリ内の約 20 か所でそれを行います。「コンテンツ」にテキストを入れるとHyperlink暗黙的に a を構築しますが、.NET 3.5ではそれにバインドできないため、 a を明示的に使用する必要があります。<Run/><Run/>TextBlock

<TextBlock>
    <Hyperlink Command="local:MyCommands.ViewDetails" CommandParameter="{Binding}">
        <TextBlock Text="{Binding Path=Name}"/>
    </Hyperlink>
</TextBlock>

更新: .NET 4.0 以降、Run.Text プロパティをバインドできるようになったことに注意してください。

<Run Text="{Binding Path=Name}" />
于 2008-09-26T18:00:57.463 に答える
13

これは「ページ」で私のために働いた。

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>
于 2009-11-26T04:49:43.170 に答える
2

Windows ストア アプリ (および Windows Phone 8.1 RT アプリ) では、上記の例が機能しません。HyperlinkBut​​ton を使用し、通常どおり Content プロパティと NavigateUri プロパティをバインドします。

于 2014-07-04T19:46:35.157 に答える