2013-07-31 3 views
1

У меня есть TextBox, где пользователь вводит uri. Затем это свойство NavigateUri гиперссылки, позволяющее пользователю щелкнуть ссылку, чтобы открыть страницу.Hyperlink - привязка содержимого

<!-- Input TextBox --> 
<TextBox x:Name="linkBox" Width="175" Text="{Binding Path=DocRef, Mode=TwoWay}" /> 

<!-- Hyperlink --> 
<TextBlock> 
    <Hyperlink DataContext="{Binding ElementName=linkBox}" NavigateUri="{Binding 
       Path=Text}" RequestNavigate="Hyperlink_RequestNavigate"> 
     <TextBlock DataContext="{Binding ElementName=linkBox}" 
        Text="{Binding Path=Text}" /> 
    </Hyperlink> 
</TextBlock> 

Это работает для ввода всего (абсолютного) uri в TextBox. Тем не менее, пользователь хочет только ввести бит документа document.extn Uri и приложить приложение к оставшемуся ресурсу (т. Е. Бит «http://www.example.com/»). Как установить базовую часть uri и добавить ссылку на документ (желательно в xaml)? Я наткнулся на собственность BaseUri HYPERLINK, которая звучит идеально, но, к сожалению, защищен, так что это не работает:

<Hyperlink DataContext="{Binding ElementName=linkBox}" 
      BaseUri="http://www.example.com/" NavigateUri="{Binding Path=Text}" 
      RequestNavigate="Hyperlink_RequestNavigate"> 

Может кто-нибудь помочь?

ответ

0

Вы можете создать пользовательский конвертер, используя интерфейс IValueConverter, чтобы получить базовый uri, добавленный uri.

2

Вы можете быть в состоянии использовать MultiBinding соединить 2 строки, нужно

<Hyperlink DataContext="{Binding ElementName=linkBox}" RequestNavigate="Hyperlink_RequestNavigate"> 
    <Hyperlink.NavigateUri> 
     <MultiBinding StringFormat="{}{0}{1}"> 
      <Binding FallbackValue="http://www.example.com/" /> 
      <Binding Path="Text" /> 
     </MultiBinding> 
    </Hyperlink.NavigateUri> 
</Hyperlink>