将数据从ObservableCollection <user>绑定到xaml页</user>

时间:2011-04-18 03:23:59

标签: silverlight-3.0

我正在尝试将来自ObservableCollection的数据绑定到xaml页面 请告诉我锄头这个

Xaml页面

<UserControl.Resources>
        <DataTemplate x:Key="User" >
        </DataTemplate>
    </UserControl.Resources>

    <Grid x:Name="LayoutRoot" DataContext="{Binding Source={StaticResource User}}">

        <data:DataGrid AutoGenerateColumns="True" 
               HeadersVisibility="All"
               ItemsSource="{Binding }"                       
               RowBackground="Cornsilk" 
               AlternatingRowBackground="BlanchedAlmond"
               ColumnWidth="85" RowHeight="30"
               IsReadOnly="True" CanUserResizeColumns="False">
        </data:DataGrid>
    </Grid>

.cs页面

    ObservableCollection<User> users;
        public SLObservableCollectionSample()
        {
            InitializeComponent();
            users = getUserCollection();
    }

ObservableCollection<User> getUserCollection()
        {
            ObservableCollection<User> rVal = new ObservableCollection<User>();

            rVal.Add(new User { Name = "Tom", Score = 2 });
            rVal.Add(new User { Name = "Sam", Score = 3 });
            rVal.Add(new User { Name = "John", Score = 4 });
            rVal.Add(new User { Name = "Dave", Score = 5 });
            rVal.Add(new User { Name = "Sue", Score = 1 });
            return rVal;
        }

 #region User INotifyPropertyChanged
        public class User : INotifyPropertyChanged
        {
            private string name;

            public string Name
            {
                get { return name; }
                set
                {
                    if (value != name)
                    {
                        name = value;
                        onPropertyChanged(this, "Name");
                    }
                }
            }

            private long score;

            public long Score
            {
                get { return score; }
                set
                {
                    if (score != value)
                    {
                        score = value;
                        onPropertyChanged(this, "Score");
                    }
                }
            }

            #region INotifyPropertyChanged Members

            public event PropertyChangedEventHandler PropertyChanged;

            private void onPropertyChanged(object sender, string propertyName)
            {

                if (this.PropertyChanged != null)
                {
                    PropertyChanged(sender, new PropertyChangedEventArgs(propertyName));
                }
            }

            #endregion

        #endregion

由于

王子

0 个答案:

没有答案