我還是很新,嘗試我的第一個嚴重的數據綁定。我已經閱讀了很多關於它是如何工作的,我只是爲這個具體的例子而努力。我試圖閱讀所有可以找到的鏈接,但大多數消息來源往往在關鍵位置有點不準確。所以這裏是:綁定或響應。 DataTemplate混淆
- 我的應用程序動態生成一個類型爲'List'的變量'PlayerList',其中'Player'是一個複雜的對象。
- 我想通過綁定顯示在列表框中。 Obvoiusly,因爲Player是一個複雜的對象,我想爲它創建一個DataTemplate。所以我在「Window1.xaml」是這樣的:在「App.xaml中」
<ListBox
Name="ListBox_Players"
ItemsSource="{Binding Source={StaticResource PlayerListResource}}"
ItemTemplate="{StaticResource PlayerTemplate}">
</ListBox>
和這樣的事情:
<DataTemplate x:Key="PlayerTemplate"> <!-- DataType="{x:Type Player}" -->
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=name}"/>
<TextBlock Text=", "/>
<TextBlock Text="{Binding Path=nrOfTabls}"/>
</StackPanel>
</DataTemplate>
當然,這個模板將變得更加冗長後。正如你在上面看到的,我試圖爲PlayerList變量創建一個資源,但尚未管理,即smthn。像這樣
<src: XXX x:Key="PlayerListResource"/>
其中對於XXX,據我瞭解,我應該輸入Resource變量的類。我試過
List<Player>, List<src:Player>
等,但obv。 XAML在'<,>'字符中遇到問題。我也有另外一個問題:通過不直接綁定(即在C#中編寫「ListBox_Players.ItemsSource = PlayerList;」)並刪除'ItemTemplate'聲明並覆蓋該方法的ToString()方法播放器類輸出播放器的名稱我已經看到綁定的作品(即,我得到列表框中的播放器名稱列表)。但是,如果我再次插入模板,它只會顯示','我的模板不起作用!
你能後的代碼對應於上述XAML的播放器和C#代碼? (例如,如果上面的XAML在MailWindow.xaml中,那麼發佈MainWindow.xaml.cs) – ikh 2012-07-30 14:09:38
嗨ikh,我的.cs很長,但關於這個問題的部分沒有特別之處。正如我在下面寫的,它似乎是通過用屬性替換類中的字段來解決的。我雖然沒有找到一個單一的來源告訴我,我可以綁定的對象實例的內部事物是prorepties,而不僅僅是字段。這確實是另一個非常有說服力的理由,總是使用屬性! – EluciusFTW 2012-07-30 19:12:58
但是,如果我想添加對類列表的'PlayerList'的引用,那另一個問題呢?我如何在XAML中執行此操作? –
EluciusFTW
2012-07-30 19:14:04