You do not notify that your property has changed, try
public Employee SelectedEmployee { get { return selectedEmployee; } set { if (selectedEmployee != value) { selectedEmployee = value; LastName = value; NotifyPropertyChanged("SelectedEmployee");
Test:
<Window x:Class="WpfApplication6.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication6" Title="MainWindow" Height="350" Width="763" Name="UI" > <Window.Resources> <DataTemplate x:Key="ItemTemplate"> <TextBlock Text="{Binding Name}" /> </DataTemplate> </Window.Resources> <Grid> <DataGrid ItemsSource="{Binding ElementName=UI,Path=Employees}" SelectedItem="{Binding ElementName=UI,Path=SelectedEmployee}" SelectionMode="Extended" SelectionUnit="FullRow" Name="employeesList" Margin="0,41,0,0" /> <Label Content="{Binding ElementName=UI,Path=SelectedEmployee.Name}" Height="28" HorizontalAlignment="Left" Name="label1" VerticalAlignment="Top" Width="288" /> <Label Content="{Binding ElementName=employeesList,Path=SelectedItem.Name}" Height="28" HorizontalAlignment="Left" Name="label2" VerticalAlignment="Top" Width="288" Margin="294,0,0,0" /> </Grid> </Window>
code:
public partial class MainWindow : Window, INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; private ObservableCollection<Employee> _employees = new ObservableCollection<Employee>(); private Employee _selectedEmployee; public MainWindow() { InitializeComponent(); Employees.Add(new Employee { Name = "sa_ddam213" }); } public ObservableCollection<Employee> Employees { get { return _employees; } set { _employees = value; } } public Employee SelectedEmployee { get { return _selectedEmployee; } set { _selectedEmployee = value; NotifyPropertyChanged("SelectedEmployee"); } }
Does this seem to work as expected, or am I missing something?
source share