C# 向数据透视项动态添加内容

C# 向数据透视项动态添加内容,c#,xaml,windows-phone-8,windows-phone,C#,Xaml,Windows Phone 8,Windows Phone,我有一个带轴心的页面。它基于VisualStudio模板 <!--Pivot Control--> <phone:Pivot SelectionChanged="evt_pivot_SelectionChanged"> <phone:Pivot.Title> <StackPanel HorizontalAlignment="Center"> <!-- &l

我有一个带轴心的页面。它基于VisualStudio模板

    <!--Pivot Control-->
    <phone:Pivot SelectionChanged="evt_pivot_SelectionChanged">
        <phone:Pivot.Title>
            <StackPanel HorizontalAlignment="Center">
                <!-- <TextBlock Text="MyApp" /> -->
                <Image Stretch="None" HorizontalAlignment="Left" Margin="0" MinWidth="50" MaxHeight="50" Source="/mAppData/logo.png"/>
            </StackPanel>
        </phone:Pivot.Title>

        <!--Pivot item one-->
        <phone:PivotItem Header="Favoriten">
            <!--Double line list with text wrapping-->
            <phone:LongListSelector Margin="13,0,0,0" ItemsSource="{Binding Items}">
                <phone:LongListSelector.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,25">
                            <Grid VerticalAlignment="Top">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="100" />
                                </Grid.ColumnDefinitions>
                                <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Text="FELIX ClubRestaurant (Berlin)" TextWrapping="NoWrap" Style="{StaticResource PhoneTextLargeStyle}" VerticalAlignment="Top" Margin="0,0,0,22" />
                                <Image Grid.Column="0" Width="110" Height="20" Source="/mAppData/stars-3.png" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="0"/>
                                <TextBlock Grid.Column="1" Text="10 min." TextWrapping="NoWrap" Margin="0" Style="{StaticResource PhoneTextSubtleStyle}" HorizontalAlignment="Right" VerticalAlignment="Bottom"/>
                            </Grid>
                            <Grid VerticalAlignment="Top" Margin="0,10,0,0">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                    <ColumnDefinition Width="*" />
                                </Grid.ColumnDefinitions>
                                <Image Grid.Column="0" Width="100" Height="100" Source="http://img.myserver.net/news-teaser//p189j19861b36c5d1pp012i21grgd.gif"/>
                                <Image Grid.Column="1" Width="100" Height="100" Source="http://img.myserver.net/news-teaser//p187qrndfcj0la0f12clfkv10ec7.gif"/>
                                <Image Grid.Column="2" Width="100" Height="100" Source="http://img.myserver.net/news-teaser/005e5d03f058fa8f7bd95f6410dfc6d6.gif"/>
                                <Image Grid.Column="3" Width="100" Height="100" Source="http://img.myserver.net/news-teaser/3c05cbf76fba7ada5182b4426e55d96b.gif"/>
                            </Grid>
                        </StackPanel>
                    </DataTemplate>
                </phone:LongListSelector.ItemTemplate>
            </phone:LongListSelector>
        </phone:PivotItem>

        <!--Pivot item two-->
        <phone:PivotItem Header="Empfohlen">
        </phone:PivotItem>
    </phone:Pivot>
现在我的问题来了:当用户导航到秒项目时,我想:

  • 从Web服务请求一些数据(这不是问题所在)
  • 转换数据(这不是问题)并
  • 在LongListSelector中填充数据(这是我的问题第1部分)
如果发生错误,我不想显示LongListSelector,而是想显示一个显示消息的文本框(这是我的问题第2部分)


如何解决我的两个问题?

您需要将itemtemplate中控件的文本/内容绑定到数据采集字段名 Text=“{Binding Fieldname}”

在错误处理中,将Longlistselector的可见性设置为“折叠”。然后,您可以显示另一个显示文本框的控件

<StackPanel>
<LongListSelector x:Name=”MyListSelector”>
..stuff
</LongListSelector>
<TextBlock x:Name=”MyError” Visibility=”Collapsed”> </TextBlock>
</StackPanel>

Catch (Exception Ex)
{
    MyListSelector.Visibility = Visibility.Collapsed
MyError.Visibility = Visibility.Visible
MyError.Text = Ex.Message;
}

东西
捕获(例外情况除外)
{
MyListSelector.Visibility=可见性。已折叠
MyError.Visibility=可见性.Visibility
MyError.Text=例如消息;
}

您可以隐藏长列表选择器,并直接从代码后面添加带有错误消息的文本框。请参阅下面的代码

try
{
   //make the service call and do your stuff
}
catch(exception ex)
{
    MyListSelector.Visibility = Visibility.Collapsed;
    var errorTextBox = new TextBox();
    errorTextBox.Text = "some Error has occured";
    //add all the properties you want to add for textbox such as color,height,fontsiz ect..
    //Name your pivotitem control, say pivotitem1
    pivotitem1.Content = errorTextBox;    

}
希望这有帮助

注意:未编译的代码。请原谅编译错误

try
{
   //make the service call and do your stuff
}
catch(exception ex)
{
    MyListSelector.Visibility = Visibility.Collapsed;
    var errorTextBox = new TextBox();
    errorTextBox.Text = "some Error has occured";
    //add all the properties you want to add for textbox such as color,height,fontsiz ect..
    //Name your pivotitem control, say pivotitem1
    pivotitem1.Content = errorTextBox;    

}