0

私は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");
        }
    }
}
4

2 に答える 2

1

Saveメソッドコードを表示します。リストにもメッセージを追加する必要があります。

void SaveMessage()
{ 

    this.MessageList.Add(this.Message);
    //does excecution to database to save.

}
于 2012-05-10T06:28:16.273 に答える
0

メッセージをMessageListに追加し OnPropertyChanged("MessageList")、viewmodelのSaveMessage()関数で追加します。

于 2012-05-10T06:09:58.560 に答える