2013-07-31 161 views
1

我有一個用戶輸入uri的TextBox。然後這成爲超鏈接的NavigateUri屬性,允許用戶點擊鏈接打開頁面。超鏈接 - 內容綁定

<!-- 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> 

這適用於在TextBox中輸入整個(絕對)uri。但是,用戶只想輸入Uri的'document.extn'位,並且應用程序預先安排資源的其餘部分(即'http://www.example.com/'位)。如何設置uri的基本部分並附加文檔參考(最好在xaml中)?我碰到這聽起來很完美,但遺憾的是受保護的超鏈接的基本URI屬性,所以這不起作用:

<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>