데이터 바인딩을 통해 WPF 하이퍼 링크의 텍스트를 설정하려면 어떻게해야합니까?


129

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>

그러나 Hyperlink 클래스에는 데이터 바인딩에 적합한 text 또는 content 속성 (즉, 종속성 속성)이 없습니다.

어떤 아이디어?

답변:


212

이상하게 보이지만 작동합니다. 우리는 앱의 약 20 곳에서 작업을 수행합니다. 텍스트를 "content"에 넣으면 Hyperlink묵시적으로 a를 구성 <Run/>하지만 .NET 3.5에서는 텍스트에 <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}" />

그렇다면 하이퍼 링크의 콘텐츠 속성이 인라인 컬렉션이라는 의미입니까?
Mal Ross

4
그것은 저입니까 아니면 링크가 실제로 작동하지 못하게합니까?
Tobias Valinski

여전히 RequestNavigate

10

이것은 "페이지"에서 나를 위해 일했습니다.

<TextBlock>
    <Hyperlink NavigateUri="{Binding Path}">
        <TextBlock Text="{Binding Path=Path}" />
    </Hyperlink>
</TextBlock>

1

위의 Windows Store 앱 (및 Windows Phone 8.1 RT 앱)에서 작동하지 않으면 HyperlinkButton을 사용하고 Content 및 NavigateUri 속성을 ususal로 바인딩하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.