2015-12-11 72 views
0

我和一位朋友正在創建我們自己的Skype「ish」應用程序,作爲一個有趣的小項目。ListView多重綁定?

我們現在已經達到了要創建聯繫人列表的程度。

我們的每一個接觸的包含此:

<ListView Grid.Column="0" x:Name="ContactList" BorderBrush="#FF252525" ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
       ScrollViewer.VerticalScrollBarVisibility="Hidden" Grid.Row="0" Grid.RowSpan="3" ItemsSource="{Binding Path=ContactNameList}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Grid> 
         <TextBlock Text="NameOfContact" Padding="7,5,0,10" FontSize="16" /> 
         <TextBlock Text="JobTitle" Padding="7,25,0,0" FontStyle="Italic" Foreground="#FF8D8D8D" /> 
         <Ellipse Fill="#FF00FF00" Width="14" Height="14" Margin="132,18,14,18" HorizontalAlignment="Right" /> 
        </Grid> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

但這裏的問題是,我們有3個observablecollections

  • ContactNameList
  • ContactTitleList
  • ContactStatusList

現在,我知道如何做一個簡單的綁定,但我不知道如何將3個綁定到一個ListView。我已經看到了Multibindings的一些例子,但是並沒有真正找到一個例子來展示如何設置源代碼(應該顯示的數據)。

所以問題是,我怎麼能讓模板看起來像這樣? (當然,理論結合!):

<ListView Grid.Column="0" x:Name="ContactList" BorderBrush="#FF252525" ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
       ScrollViewer.VerticalScrollBarVisibility="Hidden" Grid.Row="0" Grid.RowSpan="3" ItemsSource="{Binding Path=ContactNameList,ContactTitleList,ContactStatusList}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Grid> 
         <TextBlock Text="{Binding Path=ContactNameList}" Padding="7,5,0,10" FontSize="16" /> 
         <TextBlock Text="{Binding Path=ContactTitleList}" Padding="7,25,0,0" FontStyle="Italic" Foreground="#FF8D8D8D" /> 
         <Ellipse Fill="#FF00FF00" Width="14" Height="14" Margin="132,18,14,18" HorizontalAlignment="Right" /> 
        </Grid> 
       </StackPanel> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

大家很奇怪,this是如何接觸會顯示出來。我真正想要的就是文本和日食對應他們的列表。

編輯:@Kirenenko

public class ContactsClass : INotifyPropertyChanged { 

    public ContactsClass() { 

    } 

    public ObservableCollection<ContactsClass> contacts = new ObservableCollection<ContactsClass>(); 

    string[] Name = new string[2]; 
    string[] Title = new string[2]; 
    string[] Status = new string[2]; 

    public event PropertyChangedEventHandler PropertyChanged; 
} 
+0

它真的需要有3名名單?爲什麼你沒有1個聯繫人列表,聯繫人是一個有姓名,職位和地位的班級? – Jose

+0

沒有必要,我只是不知道如何創建一個單一的列表作爲你解釋的一個:) –

+0

你必須創建1個可觀察的集合像這樣'ObservableCollection contacts = new ObservableCollection ();'。你將不得不使用3個字符串來定義你的Contact類:'name','title'和'status'。 – Jose

回答

0

我相信你應該已經不是三個列表,但在其節點的用戶的所有相關信息的列表。

像:

<users> 
<user> 
<ContactName></ContactName> 
<ContactTitle></ContactTitle> 
<ContactStatus></ContactStatus> 
</user> 
</users> 
+1

不用擔心我的朋友,我對XAML不是很有經驗,所以我不是最明亮的。從我理解這可以工作,但我將如何將它與當前的DataTemplate合併,以及我已經有什麼我不完全確定如何實現它:) –