{"id":349,"date":"2015-07-04T22:35:11","date_gmt":"2015-07-04T19:35:11","guid":{"rendered":"https:\/\/gokhan-gokalp.com\/?p=349"},"modified":"2015-07-04T22:35:11","modified_gmt":"2015-07-04T19:35:11","slug":"wpf-inotifypropertychanged-nedir-ve-implementasyonu","status":"publish","type":"post","link":"https:\/\/gokhan-gokalp.com\/tr\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/","title":{"rendered":"WPF INotifyPropertyChanged Nedir ve Implementasyonu"},"content":{"rendered":"<p>Merhaba arkada\u015flar, WPF&#8217;e giri\u015f makalemi\u00a0binding modlar\u0131 \u00fczerinde\u00a0yapm\u0131\u015ft\u0131m\u00a0ve \u015fimdi en az bindingsler kadar \u00f6nemli olan\u00a0<strong>INotifyPropertyChanged<\/strong> aray\u00fcz\u00fc nedir ve nas\u0131l implemente edilir onun \u00fczerinde duraca\u011f\u0131z.<\/p>\n<h4>Ne i\u015fe yarar bu\u00a0INotifyPropertyChanged aray\u00fcz\u00fc?<\/h4>\n<blockquote><p>Bir property&#8217;nin(\u00f6zelli\u011fin) de\u011feri de\u011fi\u015fti\u011fi zaman bu de\u011fi\u015fimi e\u015f zamanl\u0131 olarak view(aray\u00fcz) k\u0131sm\u0131na bildirilmesini\u00a0sa\u011flar.<\/p><\/blockquote>\n<p>Daha iyi anlayabilmek i\u00e7in basit bir \u00f6rnek yapal\u0131m.<\/p>\n<p>\u00d6rne\u011fimizde Gird i\u00e7erisinde 2 adet <strong>TextBox<\/strong> yer alacak ve bunlar TwoWay \u015feklinde bind olacaklar ilgili <strong>Person<\/strong>\u00a0modelinin propertylerine. Person modeli ise sadece <strong>Name<\/strong>, <strong>Lastname<\/strong> ve <strong>Fullname<\/strong> propertylerine sahip olup, <strong>INotifyPropertyChanged<\/strong> aray\u00fcz\u00fcn\u00fc implemente edecek. Sonras\u0131nda ise bir <strong>Label<\/strong> i\u00e7erisinde <strong>Fullname<\/strong>&#8216;i g\u00f6sterece\u011fiz.<\/p>\n<p>Buradaki nokta <strong>Fullname<\/strong> propertysi bize <strong>TextBox<\/strong>&#8216;lardan girilen Name ve Lastname propertylerinin birle\u015fmi\u015f hallerini verip e\u015f zamanl\u0131 olarak TextBox&#8217;lar \u00fczerinde her de\u011fi\u015fim ger\u00e7ekle\u015fti\u011finde <strong>Label<\/strong> i\u00e7inde de de\u011fi\u015fimini sa\u011flam\u0131\u015f olaca\u011f\u0131z.<\/p>\n<p>\u00d6nce <strong>Person<\/strong> modelimizi olu\u015ftural\u0131m:<\/p>\n<pre class=\"lang:c# decode:true \">using System.ComponentModel;\r\n\r\nnamespace INotifyPropertyChangedExample.Models\r\n{\r\n    public class Person : INotifyPropertyChanged\r\n    {\r\n        #region Properties\r\n        private string _name;\r\n        public string Name\r\n        {\r\n            get { return _name; }\r\n            set\r\n            {\r\n                _name = value;\r\n                OnPropertyChanged(\"Name\");\r\n                OnPropertyChanged(\"FullName\");\r\n            }\r\n        }\r\n\r\n        private string _lastname;\r\n        public string Lastname\r\n        {\r\n            get { return _lastname; }\r\n            set\r\n            {\r\n                _lastname = value;\r\n                OnPropertyChanged(\"Lastname\");\r\n                OnPropertyChanged(\"FullName\");\r\n            }\r\n        }\r\n\r\n        private string _fullname;\r\n        public string FullName\r\n        {\r\n            get { return string.Format(\"{0} {1}\", _name, _lastname); }\r\n            set\r\n            {\r\n                _fullname = value;\r\n                OnPropertyChanged(\"FullName\");\r\n            }\r\n        }\r\n        #endregion\r\n\r\n        #region INotifyPropertyChanged Implementing\r\n        public event PropertyChangedEventHandler PropertyChanged;\r\n\r\n        private void OnPropertyChanged(string propertyName)\r\n        {\r\n            if (PropertyChanged != null)\r\n            {\r\n                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));\r\n            }\r\n        }\r\n        #endregion\r\n    }\r\n}<\/pre>\n<p>S\u0131n\u0131f\u0131m\u0131z\u0131 olu\u015fturduk ve\u00a0<strong>INotifyPropertyChanged<\/strong> aray\u00fcz\u00fcn\u00fc implemente ettik. Bu aray\u00fcz ile bize <strong>PropertyChanged<\/strong> isminde bir <strong>event<\/strong> geldi. Implementasyonunu ise de\u011fi\u015fen propertynin ismini alacak olan void tipinde OnPropertyChanged metodunu olu\u015fturup event&#8217;i tan\u0131mlad\u0131k.<\/p>\n<blockquote><p><strong>Not<\/strong>: De\u011fi\u015fen propertynin ismini alabilmek i\u00e7in parametre olarak string bir de\u011fi\u015fken kulland\u0131k, <strong>.Net 4.5<\/strong> ve \u00fczeri framework versiyonlar\u0131 i\u00e7in <strong>CallerMemberNameAttribute<\/strong> arac\u0131l\u0131\u011f\u0131 ile daha kolay handle edebiliriz. Parametre olarak &#8220;<strong>[CallerMemberName] string propertyName = null<\/strong>&#8221; \u015feklinde ge\u00e7memiz ve notify ederken set metodu i\u00e7erisinde\u00a0OnPropertyChanged() \u015feklinde \u00e7a\u011f\u0131rmam\u0131z yeterli olacakt\u0131r ve ilgili <strong>propertynin<\/strong> ismini otomatik olarak alacakt\u0131r.<\/p><\/blockquote>\n<p>Modelimizi tan\u0131mlad\u0131\u011f\u0131m\u0131za g\u00f6re \u015fimdi View k\u0131sm\u0131na geri d\u00f6nebiliriz:<\/p>\n<pre class=\"lang:c# decode:true\">&lt;Window x:Class=\"INotifyPropertyChangedExample.MainWindow\"\r\n        xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\"\r\n        xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\"\r\n        xmlns:d=\"http:\/\/schemas.microsoft.com\/expression\/blend\/2008\"\r\n        xmlns:mc=\"http:\/\/schemas.openxmlformats.org\/markup-compatibility\/2006\"\r\n        xmlns:local=\"clr-namespace:INotifyPropertyChangedExample\"\r\n        xmlns:m=\"clr-namespace:INotifyPropertyChangedExample.Models\"\r\n        mc:Ignorable=\"d\"\r\n        Title=\"INotifyPropertyChanged Test\" Height=\"120\" Width=\"320\"&gt;\r\n    &lt;Window.Resources&gt;\r\n        &lt;m:Person x:Key=\"person\"\/&gt;\r\n    &lt;\/Window.Resources&gt;\r\n    &lt;Grid DataContext=\"{Binding Source={StaticResource person}}\"&gt;\r\n        &lt;StackPanel VerticalAlignment=\"Center\" HorizontalAlignment=\"Center\" Width=\"300\"&gt;\r\n            &lt;TextBlock&gt;\r\n                &lt;Label Content=\"\u0130sim:\" HorizontalAlignment=\"Left\" Width=\"60\"\/&gt;\r\n                &lt;TextBox Text=\"{Binding Name, Mode=TwoWay}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Width=\"200\"\/&gt;\r\n            &lt;\/TextBlock&gt;\r\n            &lt;TextBlock&gt;\r\n                &lt;Label Content=\"Soyisim:\" HorizontalAlignment=\"Left\" Width=\"60\"\/&gt;\r\n                &lt;TextBox Text=\"{Binding Lastname, Mode=TwoWay}\" HorizontalAlignment=\"Left\" VerticalAlignment=\"Center\" Width=\"200\"\/&gt;\r\n            &lt;\/TextBlock&gt;\r\n            &lt;TextBlock&gt;\r\n                &lt;Label Content=\"Tam \u0130sim:\" HorizontalAlignment=\"Left\" Width=\"60\"\/&gt;\r\n                &lt;Label Content=\"{Binding FullName}\" HorizontalAlignment=\"Left\" Width=\"200\"\/&gt;\r\n            &lt;\/TextBlock&gt;\r\n        &lt;\/StackPanel&gt;\r\n    &lt;\/Grid&gt;\r\n&lt;\/Window&gt;<\/pre>\n<p><strong>xmlns:m<\/strong> attributu ile gerekli <strong>Models<\/strong> namespace&#8217;imizi tan\u0131mlad\u0131\u011f\u0131m\u0131za g\u00f6re <strong>Window.Resources<\/strong> nodu alt\u0131nda gerkeli modelimizi ekliyoruz. Grid&#8217;in <strong>DataContext<\/strong> \u00f6zelli\u011finede <strong>person<\/strong> modelimizi <strong>source<\/strong> olarak g\u00f6steriyoruz.<\/p>\n<p>Gerekli binding i\u015flemlerinide g\u00f6rebilece\u011finiz \u00fczere basit\u00e7e ger\u00e7ekle\u015ftiriyoruz.<\/p>\n<p>Son ekran g\u00f6r\u00fcnt\u00fcs\u00fc bu \u015fekildedir.<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/notify.jpg\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-352 lazyload\" data-src=\"\/wp-content\/uploads\/2015\/07\/notify.jpg\" alt=\"notify\" width=\"325\" height=\"124\" data-srcset=\"https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/notify.jpg 325w, https:\/\/gokhan-gokalp.com\/wp-content\/uploads\/2015\/07\/notify-300x114.jpg 300w\" data-sizes=\"(max-width: 325px) 100vw, 325px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 325px; --smush-placeholder-aspect-ratio: 325\/124;\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u00d6rnek projeye ekten ula\u015fabilirsiniz. Bir sonraki makalemde g\u00f6r\u00fc\u015fmek dile\u011fiyle. :)<\/p>\n<p><a href=\"\/wp-content\/uploads\/2015\/07\/INotifyPropertyChangedExample.rar\">INotifyPropertyChangedExample<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Merhaba arkada\u015flar, WPF&#8217;e giri\u015f makalemi\u00a0binding modlar\u0131 \u00fczerinde\u00a0yapm\u0131\u015ft\u0131m\u00a0ve \u015fimdi en az bindingsler kadar \u00f6nemli olan\u00a0INotifyPropertyChanged aray\u00fcz\u00fc nedir ve nas\u0131l implemente edilir onun \u00fczerinde duraca\u011f\u0131z. Ne i\u015fe yarar bu\u00a0INotifyPropertyChanged aray\u00fcz\u00fc? Bir property&#8217;nin(\u00f6zelli\u011fin) de\u011feri de\u011fi\u015fti\u011fi zaman bu de\u011fi\u015fimi e\u015f zamanl\u0131 olarak view(aray\u00fcz) k\u0131sm\u0131na bildirilmesini\u00a0sa\u011flar. Daha iyi anlayabilmek i\u00e7in&#8230;<\/p>\n<div class=\"more-link-wrapper\"><a class=\"more-link\" href=\"https:\/\/gokhan-gokalp.com\/tr\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/\">Devam\u0131n\u0131 okuyun<span class=\"screen-reader-text\">WPF INotifyPropertyChanged Nedir ve Implementasyonu<\/span><\/a><\/div>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[72],"tags":[82,81,79,78,80],"class_list":["post-349","post","type-post","status-publish","format-standard","hentry","category-wpf","tag-callermembername","tag-callermembernameattribute","tag-inotifypropertychanged","tag-wpf","tag-wpf-inotifypropertychanged","entry"],"translation":{"provider":"WPGlobus","version":"3.0.2","language":"tr","enabled_languages":["en","tr"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"tr":{"title":false,"content":false,"excerpt":false}}},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"og:url\" content=\"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/\" \/>\n<meta property=\"og:site_name\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta property=\"article:published_time\" content=\"2015-07-04T19:35:11+00:00\" \/>\n<meta name=\"author\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"G\u00f6khan G\u00f6kalp\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/\"},\"author\":{\"name\":\"G\u00f6khan G\u00f6kalp\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"headline\":\"WPF INotifyPropertyChanged Nedir ve Implementasyonu\",\"datePublished\":\"2015-07-04T19:35:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/\"},\"wordCount\":374,\"commentCount\":2,\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"keywords\":[\"CallerMemberName\",\"CallerMemberNameAttribute\",\"INotifyPropertyChanged\",\"WPF\",\"WPF INotifyPropertyChanged\"],\"articleSection\":[\"WPF\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/\",\"name\":\"WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\"},\"datePublished\":\"2015-07-04T19:35:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WPF INotifyPropertyChanged Nedir ve Implementasyonu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#website\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"description\":\"C# &amp; Python lover\",\"publisher\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/gokhan-gokalp.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/#\\\/schema\\\/person\\\/7e2a7fa98babd22a5fdae563c4b8cdbe\",\"name\":\"G\u00f6khan G\u00f6kalp\",\"pronouns\":\"he\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"contentUrl\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\",\"caption\":\"G\u00f6khan G\u00f6kalp\"},\"logo\":{\"@id\":\"https:\\\/\\\/gokhan-gokalp.com\\\/wp-content\\\/litespeed\\\/avatar\\\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659\"},\"sameAs\":[\"https:\\\/\\\/gokhan-gokalp.com\"],\"url\":\"https:\\\/\\\/gokhan-gokalp.com\\\/tr\\\/author\\\/gok-gokalp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/","og_locale":"tr_TR","og_type":"article","og_title":"WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp","og_url":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/","og_site_name":"G\u00f6khan G\u00f6kalp","article_published_time":"2015-07-04T19:35:11+00:00","author":"G\u00f6khan G\u00f6kalp","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"G\u00f6khan G\u00f6kalp","Tahmini okuma s\u00fcresi":"3 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/#article","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/"},"author":{"name":"G\u00f6khan G\u00f6kalp","@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"headline":"WPF INotifyPropertyChanged Nedir ve Implementasyonu","datePublished":"2015-07-04T19:35:11+00:00","mainEntityOfPage":{"@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/"},"wordCount":374,"commentCount":2,"publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"keywords":["CallerMemberName","CallerMemberNameAttribute","INotifyPropertyChanged","WPF","WPF INotifyPropertyChanged"],"articleSection":["WPF"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/","url":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/","name":"WPF INotifyPropertyChanged Nedir ve Implementasyonu - G\u00f6khan G\u00f6kalp","isPartOf":{"@id":"https:\/\/gokhan-gokalp.com\/#website"},"datePublished":"2015-07-04T19:35:11+00:00","breadcrumb":{"@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/gokhan-gokalp.com\/wpf-inotifypropertychanged-nedir-ve-implementasyonu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/gokhan-gokalp.com\/"},{"@type":"ListItem","position":2,"name":"WPF INotifyPropertyChanged Nedir ve Implementasyonu"}]},{"@type":"WebSite","@id":"https:\/\/gokhan-gokalp.com\/#website","url":"https:\/\/gokhan-gokalp.com\/","name":"G\u00f6khan G\u00f6kalp","description":"C# &amp; Python lover","publisher":{"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/gokhan-gokalp.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/gokhan-gokalp.com\/#\/schema\/person\/7e2a7fa98babd22a5fdae563c4b8cdbe","name":"G\u00f6khan G\u00f6kalp","pronouns":"he","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","url":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","contentUrl":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659","caption":"G\u00f6khan G\u00f6kalp"},"logo":{"@id":"https:\/\/gokhan-gokalp.com\/wp-content\/litespeed\/avatar\/e645f66b6264ced10d7b6d8b1f85509b.jpg?ver=1776170659"},"sameAs":["https:\/\/gokhan-gokalp.com"],"url":"https:\/\/gokhan-gokalp.com\/tr\/author\/gok-gokalp\/"}]}},"_links":{"self":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/comments?post=349"}],"version-history":[{"count":4,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/349\/revisions"}],"predecessor-version":[{"id":355,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/posts\/349\/revisions\/355"}],"wp:attachment":[{"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/media?parent=349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/categories?post=349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gokhan-gokalp.com\/tr\/wp-json\/wp\/v2\/tags?post=349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}