데이터 바인딩을 통해 WPF 하이퍼 링크의 텍스트를 어떻게 설정할 수 있습니까?
-
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 속성을 바인딩하십시오.
제휴하지 않습니다 StackOverflow