-1

2 つのページ (MainWindow とクライアント) があり、NavigationService を使用してページ間を移動しようとしています。

MainWindow から Client に移動すると機能しますが、Client から MainWindow に移動しようとすると例外が発生します。

タイプ WpfApplication1.MainWindow のオブジェクトを WpfApplication1.Client にキャストできません

これは私のメインウィンドウです

<Grid>
    <Button HorizontalAlignment="Center"
            VerticalAlignment="Center"
            Click="Navigate_Click">Navigate</Button>
</Grid>

private void Navigate_Click(object sender, RoutedEventArgs e)
{
    if (NavigationService == null)
    {
        return;
    }

    NavigationService.Navigate(new Uri("Client.xaml", UriKind.Relative), "Hi from calling window!");
    NavigationService.LoadCompleted += NavigationService_LoadCompleted;
}

private void NavigationService_LoadCompleted(object sender, NavigationEventArgs e)
{
    ((Client)e.Content).MessageFromCallingWindow = (string)e.ExtraData;
}

そして、クライアント

<Grid>
    <StackPanel>
        <TextBlock VerticalAlignment="Center"
                   HorizontalAlignment="Center"
                   Text="{Binding MessageFromCallingWindow}" />

        <Button Click="OnClick">Go back</Button>
    </StackPanel>
</Grid>

public static DependencyProperty MessageFromCallingWindowProperty = DependencyProperty.Register("MessageFromCallingWindow", typeof(string), typeof(Client));

public string MessageFromCallingWindow
{
    get { return (string)GetValue(MessageFromCallingWindowProperty); }
    set { SetValue(MessageFromCallingWindowProperty, value); }
}

private void OnClick(object sender, RoutedEventArgs e)
{
    if (NavigationService != null)
    {
        NavigationService.Navigate(new Uri("MainWindow.xaml", UriKind.Relative), "returning hello from client");
    }
}

私も試しNaviugationService.GoBack()ましたが、同じ例外が発生します。

どんな手掛かり ?

4

1 に答える 1

1

ナビゲーションが完了するたびに、次のコードを呼び出します。

((Client)e.Content).MessageFromCallingWindow = (string)e.ExtraData;

簡単に言えば、 にMainWindowキャストできないため、 に移動すると、そのコードは失敗しますClient

于 2013-12-02T14:01:15.447 に答える