Đây thực sự là một vấn đề gây phiền toái trong WPF. Tôi đã đi xa như vậy để gọi nó là một lỗi.
Như @levanovd đề cập trong câu trả lời của mình, bạn có thể có được một siêu liên kết đến quấn đúng cách bằng cách sử dụng một Run
như các yếu tố bên trong:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long hyperlink. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
này hoạt động tuyệt vời, cho đến khi bạn muốn áp dụng định dạng văn bản trong vòng siêu liên kết. Nếu bạn đã cố gắng để làm điều này, ví dụ:
<StackPanel>
<TextBlock TextWrapping="Wrap">
<Hyperlink><Run>This is a really long <Run TextWeight="Bold">hyperlink</Run>. Yeah, a really really long hyperlink, whaddaya think?</Run></Hyperlink>
</TextBlock>
</StackPanel>
Bạn sẽ nhận được một lỗi biên dịch:
The object 'Run' already has a child and cannot add ''. 'Run' can accept only one child.
Vì vậy, như @Scott Whitlock ghi chú khác, bạn phải sử dụng một TextBlock
như các yếu tố bên trong và lộn xộn xung quanh với các TextDecoration
thuộc tính của Hyperlink
và TextBlock
thay vì:
<StackPanel>
<TextBlock>
<Hyperlink TextDecorations="None"><TextBlock TextWrapping="Wrap" TextDecorations="Underline">This is a really long <Run FontWeight="Bold">hyperlink</Run>. Yeah, a really really long hyperlink, whaddaya think?</TextBlock></Hyperlink>
</TextBlock>
</StackPanel>
Sigh. Tôi thực sự ghét phần tử Hyperlink
của WPF. Nó không hoạt động như bạn mong đợi.
Cảm ơn, điều đó cũng hoạt động và đơn giản hơn rất nhiều. (Tôi đã phải di chuyển TextWrapping = "Wrap" từ TextBlock bên trong sang bên ngoài.) – svick
Liên kết không hoạt động nữa ... – fmuecke