2009-07-30 109 views
3

讓我首先說我對WPF和LINQ非常陌生,並且一直在努力學習它,同時在工作中使用它進行項目(您是否討厭必須在飛行中學習東西並在截止日期前完成項目!)。無論如何,我有一個綁定在ObservableCollection後面的代碼中的員工列表框。集合的數據源是IQueryable類型的LINQ查詢。將數據綁定列表框與WPF連接列表框

我想要做的是在列表框上顯示LastName +「,」+ FirstName格式,我不知道如何將其關閉。它將僅用於顯示,不會以任何方式影響數據。我曾嘗試使用LINQ的select新語法,但是,它不起作用,因爲查詢返回IQueryable,並且該字段不屬於Employee。列表框中的對象需要是Employee對象,因爲它們可以保存回數據庫或由於不同的原因移動到表單中的其他列表框。

我不確定該去哪兒,如果我沒有說清楚,我很抱歉。如果您對我需要做的事情有任何疑問,請詢問,我會盡力回答。謝謝!

+0

如果您發佈您的代碼,你會得到更好的反應。 – 2009-07-30 14:34:10

+0

這個問題主要與WPF有關。在這種情況下,LINQ是一種紅鯡魚。 – 2009-07-30 14:34:48

回答

2

你可以做一個多重綁定和StringFormat來做到這一點很容易,而且視覺成本較低。 在你的列表框

<ListBox ItemsSource="{Binding EmployeeCollection}"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock > 
        <TextBlock.Text > 
         <MultiBinding StringFormat=" {0},{1} "> 
          <Binding Path="LastName" /> 
          <Binding Path="FirstName" /> 
         </MultiBinding> 
        </TextBlock.Text> 
       </TextBlock> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 
1

假設你有一個ObservableCollection<Employee>,其中EmployeeLastNameFirstName性質的類型,那麼這樣的事情應該工作:

<ListBox ItemSource="{Binding Employees}"> 
    <ListBox.Resources> 
     <DataTemplate TargetType="{x:Type local:Employee}"> 
      <StackPanel> 
       <TextBlock Text="{Binding Path=LastName}" /> 
       <TextBlock Text=", " /> 
       <TextBlock Text="{Binding Path=FirstName}" /> 
      <StackPanel> 
     </DataTemplate> 
    </ListBox.Resources> 
</ListBox> 

列表框試圖顯示其項目,但Employee不是UIElement,因此它會搜索描述該類型的表示的模板。在ListBox的資源中嵌入DataTemplate即可。