рдордЬрдмреВрдд рдирд╛рдо рдХреЗ рд╕рд╛рде OnPropertyChanged

рдореИрдВ OnPropertyChanged рджреНрд╡рд╛рд░рд╛ рдмреЗрддрд╣рд╛рд╢рд╛ рдЧреБрд╕реНрд╕реЗ рдореЗрдВ рд╣реВрдБред рдЗрд╕реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ... рди рдХреЗрд╡рд▓ рдЗрд╕ рдХреЛрдб рдХреЛ рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд╕рддреНрдпрд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рдХреЛрдИ Intellisence рднреА рдирд╣реАрдВ рд╣реИ - рд╢реБрд░реБрдЖрдд рд╕реЗ рдЕрдВрдд рддрдХ рдкреВрд░реЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рддрд╛рдЗрдк рдХрд░реЗрдВ ... рдФрд░ рдпрджрд┐ рдЖрдк рдЦрд░рд╛рдм рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдХреЗ рд▓рд┐рдП рдирд┐рдЧрд▓рд╛ рдЬрд╛рдПрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХ рдмреБрд░реА рдЪреАрдЬред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд┐рдирд╛ MVVM рдореЗрдВ, рдХрд╣реАрдВ рдирд╣реАрдВ, MVVM рдХреЗ рдмрд┐рдирд╛ WPF рдореЗрдВред



рдкрд┐рдЫрд▓реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБрдд рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдмреИрд╕рд╛рдЦреА рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣рд╛рдБ рд╕реЗ рдЪреАрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬрд┐рд╕реЗ рдСрдирдкреНрд░реЛрдкрд░реНрдЯреА рдЪреЗрдВрдЬ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:

[Conditional( "DEBUG" )]

[DebuggerStepThrough]

public void VerifyPropertyName( string propertyName)

{

// Verify that the property name matches a real,

// public, instance property on this object.

if (TypeDescriptor.GetProperties( this )[propertyName] == null )

{

string msg = "Invalid property name: " + propertyName;



if ( this .ThrowOnInvalidPropertyName)

throw new Exception(msg);

else

Debug.Fail(msg);

}

}








рдФрд░ рдЖрдЬ рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рд╕реБрдВрджрд░ рддрд░реАрдХрд╛ рдвреВрдВрдв рд▓рд┐рдпрд╛ред



рд╕рдорд╛рдзрд╛рди рд╕реБрдВрджрд░ рд╣реЛ рдЧрдпрд╛ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╕рд░рд▓рддрд╛ рд╕реЗ рднреЛрдЬ рдХреЗ рдмрд┐рдВрджреБ рдкрд░: рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЗрд╕ рддрд░рд╣:

this .OnPropertyChanged(() => this .ShowOverrideButton);







рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рдЕрдзрд┐рднрд╛рд░ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

protected void OnPropertyChanged<T>(Expression<Func<T>> property)

{

PropertyChangedEventHandler handler = this .PropertyChanged;

if (handler != null )

{

var expression = property.Body as MemberExpression;

if (expression == null )

{

throw new NotSupportedException( "Invalid expression passed. Only property member should be selected." );

}



handler( this , new PropertyChangedEventArgs(expression.Member.Name));

}

}




* This source code was highlighted with Source Code Highlighter .






рд╣реЛ рдЧрдпрд╛ред рдЖрдк OnPropertyChange рдореЗрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдмрдВрдзрди рдореЗрдВ XAML рдореЗрдВ рдЕрднреА рднреА рдЦрд░рд╛рдм рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВ - рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирд╕реЗ рдХреИрд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдпрд╛ рдЬрд╛рдПред



All Articles