2014-02-27 170 views
1

我有一個具有4個套接字陣列的Device類。每個套接字都有id。Windows phone xaml數據綁定

class Device 
{ 
    public String name { get; set; }   
    public Socket[] sArray = new Socket[4];   
} 

class socket 
{ 
    public string id{ get; set; } 
} 

我想打印所有4 id到列表視圖的一個項目。每個項目有5個文本塊。我可以使用打印設備名稱,但如何從設備中的套接字陣列打印套接字ID?

<TextBlock Name="txtSocket1" Text="how to bind here socket id?"/> 
<TextBlock Name="txtSocket2" Text="how to bind here socket id?"/> 
<TextBlock Name="txtSocket3" Text="how to bind here socket id?"/> 
<TextBlock Name="txtSocket4" Text="how to bind here socket id?"/> 
<TextBlock FontSize="28" Text="{Binding Path=name}"/> //here easily I can get device name 

回答

3

如果您顯示的項目集合不應該使用不同的文本框。你想用,旨在展示藏品,像ItemsControl控制:

<ItemsControl> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <TextBlock /> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

使用此方法時,和WPF/Silverlight的一般,我建議使用MVVM pattern。在這裏,你提供的數據ViewModel在視圖中顯示:

public class SocketViewModel 
{ 
    public string Name { get; set; } 
    public List<Socket> Sockets { get; set; } 

    public SocketViewModel() 
    { 
     Sockets = new List<Socket>(); 
    } 
} 

您填寫您的數據是這樣的:

var viewModel = new SocketViewModel 
{ 
    Name = "Some name"; 
    //This is some dummy just for demo purposes 
    Sockets = YourDataBase.GetSockets(); 
} 

現在你的視圖模型分配給頁面的DataContext,這樣:

DataContext = viewModel; 

在XAML中,您可以獲取所有數據並將其顯示在屏幕上。正確的XAML現在應該是這樣的:

<ItemsControl ItemsSource="{Binding=Sockets}"> 
    <ItemsControl.ItemTemplate> 
    <DataTemplate> 
     <TextBlock Text="{Binding Path=Id}" /> 
    </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

<TextBlock FontSize="28" Text="{Binding Path=Name}"/> 
+1

Thanks dude!根據我的需要,你給了我完美的解決方案!做得好!再次感謝.... :) – Kevan

+1

沒問題,很高興我可以幫忙。 – Abbas

0

請注意,您應該綁定屬性而不是字段。在每個可以綁定到該屬性,創建一個轉換器和傳遞數組位置號碼作爲轉換文本框的

然後, 創建屬性 公共IEnumerable的SocketsToBindTo {} {返回_socketArray}。在轉換器中,您可以在轉換器中使用linq來執行類似SocketsToBindTo.Skip(commandParameter).First()並返回名稱。

雖然我已經告訴過你要得到你想要的東西的步驟。我不認爲你正在做的是正確的做法。如果你使用的是listview,我會認爲你只是綁定到itemsource,然後你只需要處理在一個Items模板上設置你的綁定等。