Я просто не могу понять его. Что я пропускаю к связанному 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));
}
}
}
}