1

私は2つ持っていList<ColumnClass>ます。1 つは左側のリストビュー用、もう 1 つは右側のリストビュー用です。これらのリストビューはポップアップ ボックスにあります。両方のリストビューのリストを変更し、それをリストビューの ItemsSource に再度割り当てています。しかし、これはすぐに UI に反映されません。ポップアップを閉じて再度開くと、変更が反映されます。私は何が欠けていますか?

4

2 に答える 2

2

List<T>をに置き換える必要がありObservableCollection<T>ます。ObservableCollections は、アイテムが削除されるたびに ListView を更新します。プロパティを変更するだけの場合は、プロパティが変更されたときに UI を更新できるように実装ColumnClassしていることを確認してください。ColumnClassINotifyPropertyChanged

例:

コード:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        MyColumns.Add(new ColumnClass { Name = "Column1" });
        MyColumns.Add(new ColumnClass { Name = "Column2" });
        MyColumns.Add(new ColumnClass { Name = "Column3" });
    }

    private ObservableCollection<ColumnClass> _myColumns = new ObservableCollection<ColumnClass>();
    public ObservableCollection<ColumnClass> MyColumns
    {
        get { return _myColumns; }
        set { _myColumns = value; }
    }
}

xaml:

<Window x:Class="WpfApplication8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="WpfApplication8" Height="368" Width="486" Name="UI" >
    <Grid>
        <ListView ItemsSource="{Binding ElementName=UI, Path=MyColumns}" DisplayMemberPath="Name" />
    </Grid>
</Window>

モデル:

public class ColumnClass : INotifyPropertyChanged
{
    private string _name;
    public string Name
    {
        get { return _name; }
        set { _name = value; NotifyPropertyChanged("Name"); }
    }



    public event PropertyChangedEventHandler PropertyChanged;
    /// <summary>
    /// Notifies the property changed.
    /// </summary>
    /// <param name="property">The info.</param>
    public void NotifyPropertyChanged(string property)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(property));
        }
    }
}
于 2012-12-27T06:24:45.577 に答える
0

またはに変更List<T>する必要があります。ObservableCollection<T>BindingList<T>

理由、リストは実装されていませんINotifyPropertyChanged

于 2012-12-27T06:28:54.693 に答える