私はMVVMを使用しており、ユーザーがメッセージ(ブログなど)を送信できるビューがあり、リストには「投稿されたメッセージが表示され続けます」。[保存]をクリックすると、ビューモデルで[保存]コマンドがトリガーされ、メッセージが保存されます。私の問題は、リストビュー内のグリッドビューが更新されないことです。誰かが私を助けてくれるかどうか知りたいです。私はちょうど輪になって行くところにいます。多くではないにしてもいくつかのコードが欠落していることは知っていますが、私の脳細胞は揚げられています。
私のxaml:
<Grid Name="grdMessage" HorizontalAlignment="Left" Width="816">
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Messages" HorizontalAlignment="Left" VerticalAlignment="Bottom" />
<ListView Name="lstMessage" Grid.Row="2" HorizontalAlignment="Left" VerticalAlignment="Bottom"
Width="762" Height="auto" Margin="15,0,0,0" ItemsSource="{Binding Path=MessageList}">
<ListView.View>
<GridView>
<GridViewColumn Width="462" Header="Message">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Message, Mode=TwoWay}" TextAlignment="Left" HorizontalAlignment="Left" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="150" Header="Submitter">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Submitter, Mode=TwoWay}" TextAlignment="Left" HorizontalAlignment="Left" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
<TextBox Name="txtNewMessage" Grid.Row="4" Grid.Column="0"
HorizontalAlignment="Left" VerticalAlignment="Top"
Width="762" Height="auto" TextWrapping="Wrap"
AcceptsReturn="True" HorizontalScrollBarVisibility="Auto"
Visibility="Collapsed" Text="{Binding Path=Message, Mode=TwoWay}"/>
<Button Name="btnAddMessage" Grid.Row="6" Grid.Column="0" Content="Add" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="0,0,0,0" Command="{Binding Path=Save}" />
私のビューモデル:
Message message;
ObservableCollection<Message> messageList;
RelayCommand save;
public ObservableCollection<Message> MessageList
{
get
{
if (messageList == null)
messageList = new ObservableCollection<Message>();
}
}
public ICommand Save
{
get
{
return saveCmd ?? (save = new RelayCommand(parameter => SaveMessage()));
}
}
void SaveMessage()
{
this.MessageList.Add(this.Message); dataSource.AddMessage(message);
}
Message Model
string message;
[DataMember]
public int Submitter {get; set;}
[DataMember]
public string Message
{
get{ return(message);}
set
{
if (message != value)
{
message = value;
OnPropertyChanged("Message");
}
}
}