Привязка не происходит в Silverlight 3 из библиотеки классов - PullRequest
0 голосов
/ 17 апреля 2011

---------- Файл библиотеки классов, где я вызываю службу WCF -------------

public class AllEmployeeViewModel
    {

       // public ObservableCollection<Employee> Employees { get; set; }
        public List<Employee> Employees { get; set; }
public void GetAllEmployees()
        {

            Proxy.EmployeeListCompleted += new EventHandler<EmployeeListCompletedEventArgs>(client_EmployeeListCompleted);
            Proxy.EmployeeListAsync();

        }

void client_EmployeeListCompleted(object sender, EmployeeListCompletedEventArgs e)
        {
            try
            {
                if (e.Error == null)
                {
                    Employees = e.Result;
                }
            }
            catch (Exception)
            {
                throw;
            }

        }
    }

--------- MainPage.xaml -----------------

<UserControl.Resources>
        <scr:AllEmployeeViewModel  x:Key="empKey"  />
    </UserControl.Resources>

    <Grid x:Name="MainGrid" Background="White" Width="400"
 Height="407" DataContext="{Binding Source={StaticResource empKey}}">
        <Grid x:Name="grdAllEmp" DataContext="{Binding Path=Employees}">

            <data:DataGrid AutoGenerateColumns ="True" Height="274"
    HorizontalAlignment="Left" Margin="8,8,0,0"
     Name="dgEmployee" VerticalAlignment="Top" Width="385"
    ItemsSource="{Binding}">
               <data:DataGrid.Columns>

                    <data:DataGridTextColumn Header="FName" Binding="{Binding FName}">
                    </data:DataGridTextColumn>
                    <data:DataGridTextColumn Header="LName" Binding="{Binding LName}">
                    </data:DataGridTextColumn>
                </data:DataGrid.Columns>
            </data:DataGrid>
</Grid>
    </Grid>

здесь я отправляю данные из файла класса в виде datacontext на mainpage.xaml, но привязка не происходит, в моем файле класса AllEmployeeViewMode я могу нажать wcf и получить данные здесь

if (e.Error == null) { Сотрудники = e.Result; }

любая помощь, как решить это было бы здорово

спасибо

принц

ответьте, как я это решил

public class AllEmployeeViewModel
    {

        public ObservableCollection<Employee> Employees { get; set; }
        WCF.EMPServiceClient Proxy;


        public AllEmployeeViewModel()
        {
            try
            {
                Employees = new ObservableCollection<Employee>();
                Proxy = new WCF.EMPServiceClient();

            }
            catch (Exception ex)
            {
                throw ex;
            }

        }

        public ICommand GetEmployees
        {
            get
            {
                return new GetAllEmployeeCommand(this);
            }
        }

        public void GetAllEmployees()
        {

            Proxy.EmployeeListCompleted += new EventHandler<EmployeeListCompletedEventArgs>(client_EmployeeListCompleted);
            Proxy.EmployeeListAsync();

        }


        void client_EmployeeListCompleted(object sender, EmployeeListCompletedEventArgs e)
        {
            try
            {
                if (e.Error == null)
                {
                    var emp = e.Result;
                    foreach (var item in emp)
                        Employees.Add(item);
                }
            }
            catch (Exception)
            {
                throw;
            }
        }


    }

тогда значения были связаны в моем xaml

1 Ответ

0 голосов
/ 17 апреля 2011

Вы не внедрили NotifyPropertyChanged для свойства Employees. Я могу видеть свойство выше прокомментировано, которое является ObsevableCollection. Если вы используете это, не должно быть никаких проблем с привязкой. Смотрите эту ссылку для деталей.

...