我有以下XAML

<Label Content="Player Name" Grid.Row="0" Grid.Column="0" Margin="2,0,2,0" HorizontalAlignment="Right" Foreground="White"/>
<TextBox Grid.Row="0" Grid.Column="1" Margin="2,2,2,2" Text="{Binding PlayerFirstName}"/>
<Label Content="Player Last Name" Grid.Row="1" Grid.Column="0" Margin="2,0,2,0" HorizontalAlignment="Right" Foreground="White"/>
<TextBox Grid.Row="1" Grid.Column="1" Margin="2,2,2,2" Text="{Binding PlayerLastName}"/>
<Label Content="Player College" Grid.Row="2" Grid.Column="0" Margin="2,0,2,0" HorizontalAlignment="Right" Foreground="White"/>
<ComboBox Grid.Row="2" Grid.Column="1" Margin="2,2,2,2"
                      ItemsSource="{Binding Colleges}" DisplayMemberPath="CollegeName"
                      SelectedItem="{Binding SelectedCollege}"/>
<Button Content="Add Player" Grid.Row="3" Grid.Column="1" Width="75" Margin="2,2,2,2"
                    Background="Blue" Foreground="White" HorizontalAlignment="Right"
                    Command="{Binding NewPlayer}"/>
<ListView Grid.Row="4" Grid.Column="1" Grid.ColumnSpan="1" Margin="2,2,2,2"
                      ItemsSource="{Binding Players, UpdateSourceTrigger=PropertyChanged}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="First Name" Width="100" DisplayMemberBinding="{Binding First}"/>
            <GridViewColumn Header="Last Name" Width="100" DisplayMemberBinding="{Binding Last}"/>
            <GridViewColumn Header="College" Width="100" DisplayMemberBinding="{Binding College}"/>
        </GridView>
    </ListView.View>
</ListView>

绑定(bind)到我的PlayersViewModel
public class PlayersViewModel : ObservableObject
{

    #region Variables
    private DataView _Players = Controller.PlayerView.GetData().DefaultView;
    private DataView _Colleges = Controller.CollegeTableAdapter.GetData().DefaultView;

    private string _PlayerFirstName;
    private string _PlayerLastName;
    private DataRowView _SelectedCollege;
    private long _PlayerCollegeID;
    #endregion

    #region Bindings

    public DataView Players
    {
        get
        {
            return _Players;
        }
        set
        {
            _Players = value;
            RaisePropertyChangedEvent("Players");
        }
    }

    public DataView Colleges
    {
        get { return _Colleges; }
        set
        {
            _Colleges = value;
            RaisePropertyChangedEvent("Colleges");
        }
    }

    public string PlayerFirstName
    {
        get { return _PlayerFirstName; }
        set
        {
            _PlayerFirstName = value;
            RaisePropertyChangedEvent("PlayerFirstName");
        }
    }

    public string PlayerLastName
    {
        get { return _PlayerLastName; }
        set
        {
            _PlayerLastName = value;
            RaisePropertyChangedEvent("PlayerLastName");
        }
    }

    public DataRowView SelectedCollege
    {
        get { return _SelectedCollege; }
        set
        {
            _SelectedCollege = value;
            _PlayerCollegeID = _SelectedCollege.Row.Field<long>("CollegeID");
            RaisePropertyChangedEvent("SelectedCollege");
        }
    }

    public ICommand NewPlayer
    {
        get { return new DelegateCommand(AddPlayer); }
    }

    #endregion

    #region Methods

    private void AddPlayer()
    {
        Controller.PersonTableAdapter.InsertPerson(_PlayerFirstName, _PlayerLastName, _PlayerCollegeID);
        Players = Controller.PlayerView.GetData().DefaultView;
    }

    #endregion

}

所有这些都很好用,除了当我在PersonTableAdapter中运行InsertPerson查询(手动工作并且已经证明可以从程序运行)时,添加新条目后Players ListView不会更新。

最佳答案

我发现自己做错了。

始终确保在INotifyPropertyChanged中实现ObservableObject接口(interface)

我的现在看起来像这样:

public abstract class ObservableObject : INotifyPropertyChanged
{

    public event PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChangedEvent(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }

}

关于c# - 在RaisePropertyChangedEvent之后ListView不更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49710217/

10-10 23:36