2012-01-26 30 views
1

我有我的網頁上下面的列表框:導航到一個頁面在一個框架中,列表框內

<ListBox Grid.Row="1" Name="SlideSelectorListBox" SelectedItem="{Binding SelectedSlide}" SelectedIndex="{Binding SelectedSlideIndex}" ItemsSource="{Binding Path=Slides}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
     <Border BorderBrush="Silver" BorderThickness="1" Padding="3" CornerRadius="5" Height="120" Width="200"> 
      <Viewbox IsEnabled="False"> 
       <Frame Height="656" Width="1360" Source ="{Binding Path=SlideURL}" IsEnabled="False"/> 
      </Viewbox> 
     </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

我設置列表框這種方式,因爲我想沿着一側與其他頁面來填補它我主頁。我已經得到它充滿了頁面,但我不得不使用

SlideURL = new Uri(pagePath, UriKind.RelativeOrAbsolute); 

導航框架,因爲我將它們添加到那裏的頁面。問題是,當我以這種方式導航幀時,我無法將參數發送到頁面。任何人都可以在發送參數的同時知道如何做到這一點?

+0

你試圖發送什麼參數 - 查詢字符串參數,數據上下文參數? – SliverNinja

+0

單個字符串。 – JonD

+0

請提供一個示例URI - 「單個字符串」的數據來自哪裏?它是靜態的還是動態的,來自數據綁定等? – SliverNinja

回答

0

我發現的最好方法是改變從幀的源到幀的內容的綁定。衛生署!

<ListBox Grid.Row="1" Name="SlideSelectorListBox" SelectedItem="{Binding SelectedSlide}" SelectedIndex="{Binding SelectedSlideIndex}" ItemsSource="{Binding Path=Slides}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Border BorderBrush="Silver" BorderThickness="1" Padding="3" CornerRadius="5" Height="120" Width="200"> 
       <Viewbox IsEnabled="False"> 
        <Frame Height="656" Width="1360" Content="{Binding Path=SlidePage}" IsEnabled="False"/> 
       </Viewbox> 
      </Border> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

然後,您可以創建頁面集合,並在創建頁面時傳遞頁面參數。

private Page _slidePage = new ProductionReportView(paramter); 
public Page SlidePage 
{ 
    get { return _slidePage; } 
    set 
    { 
     _slidePage = value; 
     NotifyPropertyChanged("SlidePage"); 
    } 
} 
0

您應該使用UriBuilder來處理QueryString參數。我將使用自定義IValueConverter將URI轉換爲有參數的有效URI。以下是如何創建基本字符串到URI生成器的示例。您可以使用ConverterParameter綁定將參數信息傳遞給轉換器。

/// <summary> 
/// Converter from string to URI 
/// </summary> 
public class StringToUriConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     Uri uri = null; 
     string stringValue = value as string; 
     if (stringValue != null) 
      Uri.TryCreate(stringValue, UriKind.Absolute, out uri); 
     return uri; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new InvalidOperationException("Only one-way binding is supported!"); 
    } 
} 
相關問題