Закрепление TextBlock к Собственности ListView изменения

Я просто не могу понять его. Что я пропускаю к связанному Textblock ? Мне нужен TextBlock , чтобы обновить каждый раз, я выбираю новый пункт в ListView .

Это - образец, который я сделал. Я мое реальное заявление, я использовал id от ListView1, чтобы принести что-то от моей DB, которую я хочу показать в моем textBlock..

Я знаю, что wpf связывает со Свойствами, и я должен осуществить INotifyPropertyChanged , но я не могу разобраться в креплениях, или возможно я пропускаю что-то еще?

Я добавил DateTime. Теперь. TosString() только, чтобы видеть более ясно, если TextBlock изменения.

XAML:


    
        
            
            
        
        
            
        

        


        

            
                
            

            
                
                    
                        
                    
                
            
        
    

C#

using System;
using System.ComponentModel;
using System.Windows;
using System.Collections.ObjectModel;

namespace WpfSO
{
    public partial class MainWindow : Window
    {
        private ObservableCollection ListData { get; set; }
        private const string _myName = "You clicked on: ";
        public Person MyPerson { get; set; }

        public MainWindow()
        {
            InitializeComponent();

           //TextBlock
            MyPerson = new Person(_myName);
            txtBlockPerson.DataContext = MyPerson;

           //ListView
            ListData = new ObservableCollection();
            var p1 = new Person("p1");
            var p2 = new Person("p2");
            ListData.Add(p1);
            ListData.Add(p2);

            ListView1.ItemsSource = ListData;
        }

        private void ListView1_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            MyPerson.Name = _myName + ListView1.SelectedItem + ". Time: " +DateTime.Now.ToString(); 
        }
    }

    public class Person : INotifyPropertyChanged
    {
        private string _name;
        public event PropertyChangedEventHandler PropertyChanged;

        public string Name
        {
            get { return _name; }
            set
            {
                if (value != _name)
                {
                    _name = value;
                    OnPropertyChanged("PersonName");
                }
            }
        }

        public Person(string name)
        {
            Name = name;
        }

       //Create the OnPropertyChanged method to raise the event 
        protected void OnPropertyChanged(string name)
        {
            PropertyChangedEventHandler handler = PropertyChanged;
            if (handler != null)
            {
                handler(this, new PropertyChangedEventArgs(name));
            }
        }
    }
}
0
nl ja de

1 ответы

У OnPropertyChanged должно быть правильное название вашей недвижимости..

Вместо OnPropertyChanged ("PersonName"); использование

OnPropertyChanged("Name");
1
добавлено
+1, ничего себе, спасибо, я didn' t знал. О, я вижу, что у этого должно быть "имя" как Собственность. Первый тест похож, он работает. I' ll принимают еще после некоторого тестирования.
добавлено автор radbyx, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot