【问题标题】:SelectionChanged for ListView inside HubSectionHubSection 内 ListView 的 SelectionChanged
【发布时间】:2016-03-21 09:43:57
【问题描述】:

当我单击列表视图上的任何项目时出现此错误。 System.NullReferenceException - {“对象引用未设置为对象的实例。”}

我的 MainPage.xaml Hub 代码

<Hub x:Name="MainHub" Header="My Hub">
<HubSection x:Name="Test" Header="Online" Visibility="Collapsed" Margin="0,30,0,0">
<DataTemplate>
<ListView Name="ItemData1"  ItemsSource="{Binding}" SelectionChanged="Catergory_Click">
 <ListView.ItemContainerStyle>
 <Style TargetType="ListViewItem">
 <Setter Property="HorizontalContentAlignment" Value="Stretch" />
 <Setter Property="FontSize" Value="18"/>
 </Style>
 </ListView.ItemContainerStyle>
 </ListView>
 </DataTemplate>
 </HubSection>
 </Hub>

我有 3 个具有相同 SelectionChanged 功能的 ListView

MainPage.xaml.cs

public class RootObject
    {
        public int id { get; set; }
        public string name { get; set; }
        public string message { get; set; }
    }

 private void Catergory_Click(object sender, SelectionChangedEventArgs e)
    {

        RootObject obj = (sender as ListView).SelectedItem as RootObject;
        User.Setting.AddOrUpdateValue("SectionName", obj.name);

    }

没有 Hub 控件和部分,相同的代码也可以正常工作。

【问题讨论】:

  • 您确定在您的SelectedItem 值中有RootObject 类型吗?因为,我看不到您如何将 ItemsSource 属性设置为您的 ListView
  • @AndriiKrupka 我没有 ListView 的 ItemSource 属性。我必须使用 Test.DataContext = TestSection;在 HubSection 内的 ListView 中显示数据。列表 TestSection = 新列表(); var objResponse1 = JsonConvert.DeserializeObject>(result); for (int i = 0; i

标签: c# wpf xaml listview windows-phone-8.1


【解决方案1】:

将 SelectionChanged 更改为 ItemClick..现在可以正常工作

 <Hub x:Name="MainHub" Header="My Hub" Foreground="White">       
<HubSection x:Name="Test" Header="Online" Visibility="Collapsed" Margin="0,30,0,0">
    <DataTemplate>
        <ListView x:Name="TestListView" ItemsSource="{Binding}" ItemClick="TestListView_ItemClick" IsItemClickEnabled="True" >
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock x:Name="textBlock"  Text="{Binding name}"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </DataTemplate>
</HubSection>

private void TestListView_ItemClickobject sender, ItemClickEventArgs e)
    {
        RootObject obj = e.ClickedItem as RootObject;
        User.Setting.AddOrUpdateValue("CourseSectionName", obj.name); 
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    相关资源
    最近更新 更多