У меня есть ListBox, который дублирует список комментариев веб-службы. Когда я запускаю приложение, комментарии отображаются отлично. Теперь я хочу использовать свойство объекта выбранного элемента ListBox и получить идентификатор, а затем назначить ему строковое значение. Когда я сейчас запускаю приложение и нажимаю на комментарий, чтобы выбрать его, я получаю исключение Null в визуальной студии. Затем я устанавливаю точку прерывания в строке кода и пытаюсь получить значение над мышью, он возвратил весь объект совершенно нормально, но все они были пустыми. фрагменты кода ниже:Объект выбранного объекта ListBox, возвращающий значение null
<ListBox x:Name="lbxComments" Margin="0,0,-12,0"
ItemsSource="{Binding CommentList,Mode=TwoWay}"
SelectionChanged="lbxComments_SelectionChanged"
>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="480"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Stretch="UniformToFill" Height="50" Width="50" Source="{Binding profile_pic}" Margin="8" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<Border Grid.ColumnSpan="2" Grid.Row="0" HorizontalAlignment="Stretch" BorderBrush="Black" BorderThickness="0,0,0,0.5"/>
<StackPanel Grid.Column="1" >
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="20" Text="{Binding comment}" TextWrapping="Wrap" TextTrimming="WordEllipsis" Foreground="White" />
<StackPanel Orientation="Horizontal" Margin="0,0,0,5">
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="16" Text="{Binding fname}" Foreground="White"/>
<StackPanel Orientation="Horizontal">
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" FontSize="16" Text="{Binding lname}" Margin="10 0 0 0" Foreground="White"/>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Replies"/>
<TextBlock Text="("/>
<TextBlock Text="{Binding totalreplies}"/>
<TextBlock Text=")" />
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
<TextBlock x:Name="replyTextBox" Grid.Row="2" Margin="50,0,0,0" Visibility="Collapsed" />
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
и в коде позади:
private void lbxComments_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string selectedCommentId;
Comment comment = ((sender as FrameworkElement).DataContext) as Comment;
comment = new Comment();
if (comment.id != null)
{
selectedCommentId = comment.id;
repliesViewModel.SetAddress(selectedCommentId);
}
... CommentList, что lbxComments связывается тип комментария
public class Comment
{
public string fname { get; set; }
public string lname { get; set; }
public string profile_pic { get; set; }
public string id { get; set; }
public string username { get; set; }
public string comment { get; set; }
public string totalreplies { get; set; }
}
так теперь я не знаю, почему он возвращает значение null, когда я пытаюсь получить выбранный объект объекта, но отображаю отлично, когда в поле списка
Я сделал это, потому что Visual Studio дал мне эту ошибку: исключение типа «System.NullReferenceException» Дополнительная информация: ссылка на объект не установлена в экземпляр объекта. Советы по устранению неполадок: используйте новое ключевое слово для создания экземпляра объекта. что я должен был сделать? –
Пожалуйста, ответьте, если вы знаете, что можно сделать @gabrielnegut –