设置itemsource后,datagrid中的Silverlight控件上未显示数据

设置itemsource后,datagrid中的Silverlight控件上未显示数据,silverlight,binding,datagrid,Silverlight,Binding,Datagrid,我已经搜索了一段时间,但我所做的任何尝试都没有解决这个问题。下面的代码执行时没有错误,但模板中没有显示任何数据 <UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="GOReviewSL.UserControls.Announcements" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/pre

我已经搜索了一段时间,但我所做的任何尝试都没有解决这个问题。下面的代码执行时没有错误,但模板中没有显示任何数据

<UserControl xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="GOReviewSL.UserControls.Announcements"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="75" d:DesignWidth="280" xmlns:my="clr-namespace:Local;assembly=Local">

<Grid x:Name="LayoutRoot" Background="White">
    <my:Fieldset Height="Auto" HorizontalAlignment="Left" Name="fieldset1" VerticalAlignment="Top">
        <StackPanel VerticalAlignment="Top" Orientation="Vertical">
            <sdk:DataGrid x:Name="AnnouncementsGrid" ItemsSource="{Binding}">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTemplateColumn>
                        <sdk:DataGridTemplateColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel VerticalAlignment="Top" Orientation="Vertical">
                                    <HyperlinkButton x:Name="AnnouncmentTitleLink" FontWeight="Bold" Content="{Binding Title}" Click="AnnouncmentTitleLink_Click" />
                                    <TextBlock x:Name="AuthorText" Text="{Binding Author}" FontSize="10" FontStyle="Italic"/>
                                    <TextBlock x:Name="AnnouncementText" Text="{Binding Title}"/>
                                </StackPanel>
                            </DataTemplate>
                        </sdk:DataGridTemplateColumn.CellTemplate>
                    </sdk:DataGridTemplateColumn>
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </StackPanel>
    </my:Fieldset>
    <Image Source="/GOReviewSL;component/Images/announcements.png" Height="20" HorizontalAlignment="left" Margin="20,1,0,0" VerticalAlignment="Top"/>
</Grid>
我的绑定代码:

        public Announcements()
    {
        InitializeComponent();
        objController.ListAnnouncementsCompleted += new EventHandler<ListAnnouncementsCompletedEventArgs>(objController_ListAnnouncementsCompleted);
        objController.ListAnnouncementsAsync();
    }

    void objController_ListAnnouncementsCompleted(object sender, ListAnnouncementsCompletedEventArgs e)
    {
        var objAnnouncements = from el in e.Result
                               select el;

        AnnouncementsGrid.DataContext = objAnnouncements.ToList();
        AnnouncementsGrid.ItemsSource = objAnnouncements.ToList();
    }
公告()
{
初始化组件();
objController.ListAnnouncementsCompleted+=新事件处理程序(objController\u ListAnnouncementsCompleted);
objController.ListAnnouncementsAsync();
}
void objController\u ListAnnouncementsCompleted(对象发送方,ListAnnouncementsCompletedEventArgs e)
{
var objannounces=来自e.结果中的el
选择el;
AnnouncementsGrid.DataContext=objannounces.ToList();
AnnouncementsGrid.ItemsSource=objannounces.ToList();
}

最后一点我已经改了好几次了。任何帮助都将不胜感激

虽然代码中有一些冗余调用,但代码应该可以工作:

// This is not necessary, and neither is ItemsSource="{Binding}"
//AnnouncementsGrid.DataContext = objAnnouncements.ToList();
AnnouncementsGrid.ItemsSource = objAnnouncements.ToList();
您应该检查objannounces.ToList()是否确实有值。在其上设置断点

检查事项:

  • 我想知道你的图像是否覆盖了网格。试着先评论一下
  • 我不知道FieldSet是什么。Datagrid在字段集之外时工作吗

  • 代码应该可以工作,尽管其中有一些冗余调用:

    // This is not necessary, and neither is ItemsSource="{Binding}"
    //AnnouncementsGrid.DataContext = objAnnouncements.ToList();
    AnnouncementsGrid.ItemsSource = objAnnouncements.ToList();
    
    您应该检查objannounces.ToList()是否确实有值。在其上设置断点

    检查事项:

  • 我想知道你的图像是否覆盖了网格。试着先评论一下
  • 我不知道FieldSet是什么。Datagrid在字段集之外时工作吗

  • 尝试将您的
    网格
    绑定到
    可观察集合
    。首先,我使用List,在加载DataGrid时遇到了很多问题。建议在Silverlight中使用
    ObservableCollection
    ,而不是
    List

    使用System.Collections.ObjectModel;
    可观察的收集公告收集;
    公众可观测收集公告收集
    {
    获取{return announcementCollection;}
    设置
    {
    宣告收集=价值;
    NotifyPropertyChanged(“公告集合”);
    }
    }
    
    尝试将您的
    网格
    绑定到
    可观察集合
    。首先,我使用List,在加载DataGrid时遇到了很多问题。建议在Silverlight中使用
    ObservableCollection
    ,而不是
    List

    使用System.Collections.ObjectModel;
    可观察的收集公告收集;
    公众可观测收集公告收集
    {
    获取{return announcementCollection;}
    设置
    {
    宣告收集=价值;
    NotifyPropertyChanged(“公告集合”);
    }
    }
    
    谢谢。这很有帮助。数据在那里,但没有显示出来。这有助于解决这个问题。谢谢你,因为你和下面的评论都有助于解决这个问题。谢谢。这很有帮助。数据在那里,但没有显示出来。这有助于解决这个问题。谢谢你,因为你和下面的评论都帮助解决了这个问题。部分问题被掩盖了。现场设置帮助隐藏了这一点。我能够移除字段集以找到它,并在调整位置后将其添加回。(字段集是一个类似于HTML字段集的对象)。谢谢你,因为你和上面的评论都帮助解决了这个问题。部分问题被掩盖了。现场设置帮助隐藏了这一点。我能够移除字段集以找到它,并在调整位置后将其添加回。(字段集是一个类似于HTML字段集的对象)。谢谢你,因为你的和上面的评论都帮助解决了这个问题。我也遇到了这个问题,尽管row.count是正确的,但在网格中只显示空白。我也遇到了这个问题,尽管row.count是正确的,但在网格中只显示空白。
    using System.Collections.ObjectModel;
    
        ObservableCollection<Announcement> announcementCollection;
    
                public ObservableCollection<Announcement> AnnouncementCollection
                {
                    get { return announcementCollection; }
                    set
                    {
                        announcementCollection = value;
                        NotifyPropertyChanged("AnnouncementCollection");
                    }
                }