2015-11-17 63 views
-2

我正在將當前的WinForms應用程序升級到WPF應用程序,並且遇到了一個奇怪的問題。WPF在某些WCF方法上返回NULL

首先,方法(GetLectures)正在處理當前的應用程序,所以我知道WCF方法沒有任何問題。

所以在我的WPF應用程序「V iewModel」類我打電話讓所有的講座(GetLectures)的方法。

public List<Publish.Lecture> Lecture 
{ 
    get 
    { 
     return Client.GetLectures(Session).ToList(); 
    } 
} 

然後我暴飲暴食我的DataGrid:

<DataGrid BorderBrush="#e5e5e5" CellStyle="{StaticResource episodeDataGridCell}" RowHeaderWidth="0" GridLinesVisibility="None" Background="Transparent" HorizontalAlignment="Left" Margin="10,24,0,0" ItemsSource="{Binding Lecture}" Grid.Row="1" VerticalAlignment="Top" Height="435" Width="472" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding Description}" CanUserResize="False" ClipboardContentBinding="{x:Null}" Header="Episode" Width="150"/> 
      <DataGridTextColumn Binding="{x:Null}" CanUserResize="False" ClipboardContentBinding="{x:Null}" Header="Access" Width="150"/> 
      <DataGridTextColumn Binding="{x:Null}" CanUserResize="False" ClipboardContentBinding="{x:Null}" Header="Player" Width="150"/> 
     </DataGrid.Columns> 
</DataGrid> 

我得到一個錯誤的 '視圖模型' 它說:

Value cannot be null. 

這是聲稱什麼正在退回?

我曾嘗試調用另一種方法在該WCF服務'GetChannel',這工作正常。

任何人有任何想法?

+0

這似乎是一個壞主意,一個屬性綁定到一個這樣的服務。它會在每次使用該屬性時調用該服務。 –

+0

@ DanielA.White謝謝你讓我知道,我會研究這個。 –

回答

1

如果您的方法GetLectures不返回任何內容..您沒有檢查。而是直接繼續進行.ToList(),試着檢查空返回值,也可以使用LINQ查詢.Any()

var ABC = Client.GetLectures(Session); 

If(ABC != null && ABC.Any()) 
    return ABC.ToList(); 
+1

儘管你不應該在get ...中寫入服務調用,但每次綁定和每次訪問此屬性時,代碼都會強制進行服務調用。 – Himadri

+0

請使用代碼格式化工具通過編輯來格式化代碼。它使您的答案脫穎而出,更清晰,更具可讀性。 – NSNoob