1
我有一個DataTemplate
ListBoxItem(應該)相當簡單,只需通過{Binding}
訪問我的類的屬性。Silverlight {Binding}將不會訪問類成員
下面是我的類和代碼,它創建ListBox的簡單(虛擬)ItemsSource。
public class ChatMessage
{
public string Message = "Testing Message";
public DateTime DateReceived = new DateTime(2011, 07, 16, 14, 00, 05);
public override string ToString()
{
return Message;
}
}
// ....
// Dummy Data
ObservableCollection<ChatMessage> chatItems = new ObservableCollection<ChatMessage>();
for (int i = 0; i < 20; i++)
chatItems.Add(new ChatMessage());
lbMessages.ItemsSource = chatItems;
這裏是我的DataTemplate ..
<DataTemplate x:Key="ChatItemListBox">
<Grid Width="362">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="26" />
</Grid.RowDefinitions>
<TextBlock Text="{Binding Message}" />
<TextBlock Grid.Row="1"Text="{Binding DateReceived}"/>
</Grid>
</DataTemplate>
出於某種原因,這兩個TextBlock
s爲完全是空的。但是,如果我將例如{Binding Message}
更改爲{Binding}
,它將調用ToString並顯示消息。
我知道我必須失去了一些東西很簡單..
以防萬一它的事項,列表框的定義如下:
<ListBox x:Name="lbMessages" Margin="0,8,0,72" ItemTemplate="{StaticResource ChatItemListBox}"/>
你說得對,我剛讀,你不能對字段執行數據綁定。謝謝你讓我感到愚蠢,並修復我的苦難;-)(在5分鐘內,我能接受!) –
@rudi:不客氣! – Vlad