데이터 바인딩을 통해 WPF 하이퍼 링크의 텍스트를 어떻게 설정할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/140996

  •  02-07-2019
  •  | 
  •  

문제

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>

그러나 하이퍼 링크 클래스에는 데이터 바인딩에 적합한 텍스트 또는 컨텐츠 속성이 없습니다 (즉, 종속성 속성).

어떤 아이디어?

도움이 되었습니까?

해결책

이상하게 보이지만 작동합니다. 우리는 앱에서 약 20 개의 다른 장소에서 그것을합니다. 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}" />

다른 팁

이것은 "페이지"에서 나를 위해 효과가있었습니다.

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

위의 예제는 Windows Store 앱 (및 Windows Phone 8.1 RT 앱)에서 작동하지 않으며 HyperLinkButton을 사용하고 컨텐츠를 바인딩하고 USUSAL과 같이 NavigateUri 속성을 바인딩하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top