ListBoxItemのために私はDataTemplate
を持っていますが、これはかなり単純で、私のクラスのプロパティは{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は、両方のTextBlock
sが完全に空になっているいくつかの理由..
<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>
です。しかし、たとえば{Binding Message}
を{Binding}
に変更すると、ToStringが呼び出され、メッセージが表示されます。それが重要
念の
私は、私は非常に単純な何かが欠けする必要があります知っている...、リストボックスは、以下のように定義されます。
<ListBox x:Name="lbMessages" Margin="0,8,0,72" ItemTemplate="{StaticResource ChatItemListBox}"/>
あなたは正確に正しい、私はちょうどあなたがフィールドにデータバインディングを実行できないことを読みました。私が愚かな気分にさせてくれてありがとうございました;-)(私ができる時は5分で受け入れます) –
@rudi:あなたは大歓迎です! – Vlad