2011-04-27 120 views
0

我有一個綁定到數據上下文的域服務的網格。我想刷新數據上下文。使用新的DataContext更新網格WPF

我的代碼:

  <Grid DataContext="{Binding Data, ElementName=userDomainDataSource}" Name="gridAccountDetails"> 
       <sdk:Label Content="Address Line" HorizontalAlignment="Left" Margin="443,67,0,0" d:LayoutOverrides="VerticalAlignment" VerticalAlignment="Top" /> 
       <TextBox HorizontalAlignment="Left" Margin="537,59,0,0" x:Name="txtAccountDetailsAddress" Text="{Binding addressline, Mode=OneWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" d:LayoutOverrides="VerticalAlignment" Height="24" VerticalAlignment="Top" DataContext="{Binding}" /> 
       <sdk:Label Content="County" HorizontalAlignment="Left" Margin="443,142,0,143" d:LayoutOverrides="Height" /> 
       <TextBox HorizontalAlignment="Left" Margin="537,134,0,143" x:Name="txtAccountDetailsCounty" Text="{Binding county, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" /> 
       <sdk:Label Content="Email" HorizontalAlignment="Left" Margin="26,143,0,142" d:LayoutOverrides="HorizontalAlignment, Height" /> 
       <TextBox HorizontalAlignment="Left" Margin="114,136,0,142" x:Name="txtAccountDetailsEmail" Text="{Binding email, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" d:LayoutOverrides="HorizontalAlignment" /> 

       <sdk:Label Content="First Name" HorizontalAlignment="Left" Margin="26,67,0,0" VerticalAlignment="Top" /> 
       <TextBox HorizontalAlignment="Left" Margin="114,60,0,0" x:Name="txtAccountDetailsFirstname" Text="{Binding firstname, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" Width="233" Height="23" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment" /> 

       <sdk:Label Content="Last Name" HorizontalAlignment="Left" Margin="26,104,0,0" VerticalAlignment="Top" /> 
       <TextBox HorizontalAlignment="Left" Margin="114,97,0,0" x:Name="txtAccountDetailsLastname" Text="{Binding lastname, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="23" VerticalAlignment="Top" d:LayoutOverrides="HorizontalAlignment" /> 
       <sdk:Label Content="Postcode" HorizontalAlignment="Left" Margin="443,0,0,104" VerticalAlignment="Bottom" /> 
       <TextBox HorizontalAlignment="Left" Margin="537,0,0,104" x:Name="txtAccountDetailsPostcode" Text="{Binding postcode, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="24" VerticalAlignment="Bottom" /> 
       <sdk:Label Content="Town" Margin="0,105,323,0" VerticalAlignment="Top" HorizontalAlignment="Right" /> 
       <TextBox HorizontalAlignment="Left" Margin="537,0,0,180" x:Name="txtAccountDetailsTown" Text="{Binding town, Mode=TwoWay, NotifyOnValidationError=true, TargetNullValue='', ValidatesOnExceptions=true}" Width="233" Height="24" VerticalAlignment="Bottom" /> 
       <Button Content="Edit Account Details" HorizontalAlignment="Right" Margin="0,0,26,35" VerticalAlignment="Bottom" Width="136"/> 
      </Grid> 

我已經設置與碼域源:

EntityQuery<Web.User> qry = 
        from u in usrClass.getQuery() 
        where u.userId == usrClass.getUserId() 
        select u; 
       LoadOperation<Web.User> loadU = usrClass.loadUsersQuery(qry); 
       userDomainDataSource.DataContext = loadU.Entities; 

我已經嘗試使用:

gridAccountDetails.DataContext = userDomainDataSource.DataContext; 

gridAccountDetails.DataContext = userDomainDataSource.Data; 

沒有運氣

但我想刷新數據源,因此新價值得到放入文本框,因爲這些可以由用戶來改變。

任何人都可以提供任何信息。謝謝

回答

0

那麼你必須告訴「gridAccountDetails」「userDomainDataSource」的「數據」發生了變化。最廣泛用於此的是引發一個PropertyChanged事件,儘管我不確定這將如何適合您的服務,可能考慮從服務到您的網格的緩衝區。

有一件事情曾經綁定我不會觸及你的網格的datacontext,你綁定它,然後覆蓋。

+0

我似乎無法找到一個propertyChanged事件,在visual studio中查找它沒有列出。 – 2011-04-27 14:49:04

+0

我會創建一個自定義類(小包裝)並將其用於綁定。實施INotifyPropertyChanged,它應該工作。我只注意到silverlight標籤 - 我不確定這是否會與silverlight一起工作,因爲我沒有經驗。我只寫關於wpf。 – hyp 2011-04-27 16:13:33