0

私は WPF が初めてで、一部のプロパティが変更されたときにグリッドを自動更新できません。私が達成した唯一のこと - 要素の追加時に自動更新。

これが私のコードです:

public partial class MainWindow : Window
{
    private Model model;

    public MainWindow()
    {
        InitializeComponent();
        model = new Model();
        MyGrid.ItemsSource = model.Content;
    }

    private void MyButton_Click(object sender, RoutedEventArgs e)
    {
        MyGrid.Items.Refresh();
    }
}

public class Model
{
    public ObservableCollection<Single> Content;
    private Random r;
    private Action action;
    private static object _syncLock = new object();

    public Model()
    {
        Content = new ObservableCollection<Single>();
        r = new Random(); 
        action = new Action(process);
        action.BeginInvoke(null,null);
        BindingOperations.EnableCollectionSynchronization(Content, _syncLock);          
    }

    private void process()
    {
        while (true)
        {
            Content.Add(new Single { Name = "name" });
            Content[r.Next(0,Content.Count())].Name = "rename" + r.Next(1,100);
            Thread.Sleep(1000);
        }
    }
}

public class Single : INotifyPropertyChanged
{
    private string name;
    public string Name 
    {
        get { return name; }
        set 
        {
            name = value;
            RaisePropertyChanged(Name);
        } 
    }
    public event PropertyChangedEventHandler PropertyChanged;
    private void RaisePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
4

2 に答える 2

0

問題はここにありました:

public string Name
{
    get { return name; }
    set
    {
        name = value;
        RaisePropertyChanged(Name);
    }
}

使用しなければならなかった

RaisePropertyChanged("Name");

シンプルで愚かな..

于 2013-07-02T13:08:18.730 に答える