Windows phone 8.1 返回null的字符串

Windows phone 8.1 返回null的字符串,windows-phone-8.1,Windows Phone 8.1,我面临使用e.ClickedItem获取字符串值的问题 以下是我的ListView的外观: <ListView x:Name="PoemListView" AutomationProperties.AutomationId="PoemListView" AutomationProperties.Name="Poems In Item" TabIndex="1" ItemsSource="{Binding It

我面临使用e.ClickedItem获取字符串值的问题

以下是我的ListView的外观:

 <ListView
        x:Name="PoemListView"
        AutomationProperties.AutomationId="PoemListView"
        AutomationProperties.Name="Poems In Item"
        TabIndex="1"
        ItemsSource="{Binding Item.Poems}"
        IsItemClickEnabled="True"
                    ItemClick="PoemView_PoemClick" 
        SelectionMode="None"
        SelectionChanged="PoemSelectionChanged"
        IsSwipeEnabled="False" Padding="0,0,0,0" Margin="0,0,0,0"
            ContinuumNavigationTransitionInfo.ExitElementContainer="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>


                        <StackPanel   Grid.Column="1" VerticalAlignment="Top" Margin="0,0,0,27.5" HorizontalAlignment="Left"  ScrollViewer.VerticalScrollBarVisibility="Hidden">
                            <!--<CheckBox x:Name="PoemCheckbox" Checked="ContentChecked" Unchecked="ContentUnchecked"/>-->
                            <TextBlock x:Uid="PoemId" Name="PoemId" Text="{Binding PoemId}" DataContext="{Binding}" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" TextWrapping="WrapWholeWords"/>
                            <TextBlock x:Uid="PoemTitleId" Text="{Binding PoemTitle}" FontSize="{Binding ElementName=FontSlider, Mode=OneWay, Path=Value}" DataContext="{Binding}" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" Foreground="{ThemeResource PhoneMidBrush}" TextWrapping="WrapWholeWords"/>
                            <TextBlock x:Uid="PoemMeanId" Text="{Binding PoemMean}"  DataContext="{Binding}" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}" TextWrapping="WrapWholeWords"/>

                        </StackPanel>

                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
在收藏夹页面的LoadState事件中,我添加了以下代码:

private void NavigationHelper_LoadState(object sender, LoadStateEventArgs e)
    {
     string poem = e.NavigationParameter as string;


     if (string.IsNullOrEmpty(poem))
       {
           FavText.Text = "no favorite text";

        }

       else { FavText.Text = poem;

     }

    }
问题是在LoadState中,当e.NavigationParameter加载传递给它的字符串时,字符串未正确加载。因此,FavText.Text总是返回“无常用文本”


有人知道如何解决这个问题吗?

当您将e.ClickedItem强制转换为TextBlock时,您的PoemId可能为空

试试这个

Poem poem = e.ClickedItem as Poem;
this.Frame.Navigate(typeof(Favorite), poem);

我没有将e.ClickedItem强制转换为TextBlock,而是更新了如下代码,效果非常好:

var type = ((PoemItem)e.ClickedItem).PoemTitle;
        this.Frame.Navigate(typeof(Favorite), type);

在我的解决方案中,e.NavigationParameter不为null。然而,当数据被传递到字符串poem时,它被填充为null。@Aiseduk那么你显然需要发送一个字符串PoemId或其他什么,但是我给你展示的演员阵容很有效。
var type = ((PoemItem)e.ClickedItem).PoemTitle;
        this.Frame.Navigate(typeof(Favorite), type);