Переход к странице во фрейме в списке - PullRequest
1 голос
/ 27 января 2012

У меня есть следующий список на моей странице:

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

, чтобы перемещаться по фреймам, когда я добавляю их на эти страницы.Проблема в том, что я не могу отправить параметры на страницы, когда я перемещаюсь по фреймам таким образом.Кто-нибудь знает способ сделать это, имея возможность отправлять параметры?

Ответы [ 2 ]

0 голосов
/ 16 мая 2012

Лучший способ, который я нашел, - это изменить привязку от источника кадра к содержимому кадра.Дох!

<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 голосов
/ 17 февраля 2012

Вы должны использовать 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!");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...