我的页面上有以下列表框:
<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 :(得分: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!");
}
}
答案 1 :(得分: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");
}
}