ورود

View Full Version : Datagrid هنگامی که property تغییر میکند Update نمی شود



AftaB66
یک شنبه 20 بهمن 1392, 11:53 صبح
سلام.
من دیتاگریدم رو به یک پراپرتی که در CodeBehind همان Window تعریف شده بایند کرده ام .


<DataGrid x:Name="dg_Servers"
ItemsSource="{Binding Path=Lst_Servers}"
AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Binding="{Binding Path= OS_NAME}" Header="مرکز" ></DataGridTextColumn>
<DataGridTextColumn Width="*" Binding="{Binding Path= IP}" Header="IP" ></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>



در CodeBehind :



public partial class Frm_SelectServers : Window, INotifyPropertyChanged
}
public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName));
}


private List<Server> _lst_Servers = new List<Server>();
public List<Server> Lst_Servers
{
get
{
if (_lst_Servers == null)
_lst_Servers = new List<Server>();

return _lst_Servers;
}
set
{
_lst_Servers = value;
if (PropertyChanged != null)
{
OnPropertyChanged("Lst_Servers");
}
}
}


و در Constructor :



DataContext=this;

ولی زمانی که به پراپرتی Lst_Servers آیتمی اضافه می کنم ، دیتاگریدم آپدیت نمی شود !
یه جا سرچ کردم گفته بود خود کلاسی که ازش پراپرتی ساختی (در مثال من کلاس Server ) رو هم باید از اینترفیس INotifyPropertyChanged به ارث ببری ، ولی اون کار رو هم کردم نشد !!!
راهنمایی لطفا ..

aghayex
دوشنبه 21 بهمن 1392, 20:52 عصر
شما باید دیتاکانتکس ویندوز یا یوزر کنترل رو به این صورت بایند کنید .

DataContext="{Binding RelativeSource={RelativeSource Self }}"