<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>WPF</title>
	<atom:link href="http://smartclient.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://smartclient.wordpress.com</link>
	<description>Just another WordPress.com weblog</description>
	<lastBuildDate>Mon, 07 Sep 2009 09:10:11 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='smartclient.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>WPF</title>
		<link>http://smartclient.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://smartclient.wordpress.com/osd.xml" title="WPF" />
	<atom:link rel='hub' href='http://smartclient.wordpress.com/?pushpress=hub'/>
		<item>
		<title>DsoFramer on x64</title>
		<link>http://smartclient.wordpress.com/2009/09/07/dsoframer-on-x64/</link>
		<comments>http://smartclient.wordpress.com/2009/09/07/dsoframer-on-x64/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 09:08:11 +0000</pubDate>
		<dc:creator>smartclient</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://smartclient.wordpress.com/2009/09/07/dsoframer-on-x64/</guid>
		<description><![CDATA[To use DsoFramer on 64-bit systems, copy &#8220;dsoframer.ocx&#8221; to &#8220;C:\Windows\SysWOW64\&#8221; and run command "C:\Windows\SysWOW64\regsvr32.exe "C:\Windows\SysWOW64\dsoframer.ocx""<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=19&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>To use DsoFramer on 64-bit systems, copy &#8220;dsoframer.ocx&#8221; to<br />
&#8220;C:\Windows\SysWOW64\&#8221; and run command<br />
<code>"C:\Windows\SysWOW64\regsvr32.exe "C:\Windows\SysWOW64\dsoframer.ocx""</code></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smartclient.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smartclient.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smartclient.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=19&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://smartclient.wordpress.com/2009/09/07/dsoframer-on-x64/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/866a3f330f5ee62086b62945d4b982a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smartclient</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF Page</title>
		<link>http://smartclient.wordpress.com/2009/04/20/wpf-page/</link>
		<comments>http://smartclient.wordpress.com/2009/04/20/wpf-page/#comments</comments>
		<pubDate>Mon, 20 Apr 2009 11:44:10 +0000</pubDate>
		<dc:creator>smartclient</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://smartclient.wordpress.com/?p=11</guid>
		<description><![CDATA[Bazen standart Windows uygulamaları (ToolBar, Menu, vb) yerine, Web tarzı, sayfa tabanlı uygulamalar tasarlamak daha anlamlı olmaktadır. WPF&#8217;in sağladığı sayfa tabanlı uygulama mimarisi, kompleks olmayan uygulamalar ve özellikle kolay dağıtılabilen uygulamalar (XBAP) geliştirilmek istendiğinde uygun bir tercihtir. Sayfa tabanlı uygulama geliştirmek için Window yerine Page sınıfını kullanmak gerekir. Uygulamayı tasarlarken Page sınıfının &#8220;top level container&#8221; [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=11&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:left;">Bazen standart Windows uygulamaları (ToolBar, Menu, vb) yerine, Web tarzı, sayfa tabanlı uygulamalar tasarlamak daha anlamlı olmaktadır. WPF&#8217;in sağladığı sayfa tabanlı uygulama mimarisi, kompleks olmayan uygulamalar ve özellikle kolay dağıtılabilen uygulamalar (XBAP) geliştirilmek istendiğinde uygun bir tercihtir.</p>
<p style="text-align:left;">Sayfa tabanlı uygulama geliştirmek için Window yerine Page sınıfını kullanmak gerekir. Uygulamayı tasarlarken Page sınıfının &#8220;top level container&#8221; olduğunu görürsünüz.Ancak &#8220;runtime&#8221;da durum biraz farklıdır. &#8220;Runtime&#8221;da Page sınıfı aşağıdakilerden birinin içerisinde bulunabilir,</p>
<ul style="text-align:left;">
<li>NavigationWindow</li>
<li>Bir Window içindeki Frame</li>
<li>Bir Page içindeki Frame</li>
<li>&#8220;Web Browser&#8221; içindeki Frame</li>
</ul>
<p style="text-align:left;">&#8220;Designer&#8221;da &#8220;top level&#8221; kontrol olarak Page verdiğinizde WPF otomatik olarak bir NavigationWindow objesi oluşturur ve bu Page&#8217;i içerisine ekler. NavigationWindow Window sınıfını &#8220;inherit&#8221; eder.</p>
<p style="text-align:left;">Page sınıfı &#8220;ContentControl&#8221;den türememesine rağmen sadece bir adet content alabilir.</p>
<p style="text-align:left;">Sayfalar arasında ilerlemek için &#8220;HyperLink&#8221;ler kullanılabilir.</p>
<p style="text-align:left;"><code>&lt;TextBlock&gt; 2. Sayfaya Git &lt;Hyperlink NavigateUri="Sayfa2.xaml"&gt; Git &lt;/Hyperlink&gt; &lt;/TextBlock&gt;</code></p>
<p style="text-align:left;">&#8220;NavigateUri&#8221; &#8220;property&#8221;sine bir web adresi yazarsanız, kliklendiğinde ilgili web sayfası görüntülenecektir.</p>
<p style="text-align:left;">Eğer &#8220;target page&#8221; &#8220;scrollable&#8221;sa, &#8220;<code> NavigateUri = "Sayfa.xaml#txtUserName" </code>&#8221; gibi bir ifade direkt olarak o &#8220;control&#8221;ü gösterecek şekilde sayfayı yükler.</p>
<p style="text-align:left;">&#8220;Page&#8221;leri &#8220;Frame&#8221; kontrolü içerisinde de yükleyebilirsiniz. Bu sayede bir &#8220;Window&#8221;un veya başka bir &#8220;Page&#8221;in içinde bir &#8220;Page&#8221; yükleyebilirsiniz.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smartclient.wordpress.com/11/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smartclient.wordpress.com/11/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smartclient.wordpress.com/11/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=11&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://smartclient.wordpress.com/2009/04/20/wpf-page/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/866a3f330f5ee62086b62945d4b982a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smartclient</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF :: &#8220;Dependency Property&#8221; Depends</title>
		<link>http://smartclient.wordpress.com/2009/04/08/wpf-dependency-property-depends/</link>
		<comments>http://smartclient.wordpress.com/2009/04/08/wpf-dependency-property-depends/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 13:30:08 +0000</pubDate>
		<dc:creator>smartclient</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://smartclient.wordpress.com/?p=9</guid>
		<description><![CDATA[&#8220;Dependency Property&#8221;lerin adında &#8220;dependency&#8221; geçmesinin nedeni &#8220;property&#8221; değerinin klasik .Net &#8220;property&#8221;leri gibi tek bir değişkene değil de bir çok değişkene ve mekanizmaya bağlı olmasındandır. Örneğin bir &#8220;dependency property&#8221;nin değerini okuduğunuzda &#8220;CoerceValueCallback&#8221; devreye girer. Bunun yanında bir &#8220;dependency property&#8221;nin değeri aşağıdaki sıraya göre belirlenir, &#8220;FrameworkPropertyMetadata&#8221; ile atanmış &#8220;default&#8221; değer &#8220;Inherited&#8221; değer. (Eğer &#8220;FrameworkPropertyMetadata.Inherits&#8221; &#8220;true&#8221; ise ve [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=9&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>&#8220;Dependency Property&#8221;lerin adında &#8220;dependency&#8221; geçmesinin nedeni &#8220;property&#8221; değerinin klasik .Net &#8220;property&#8221;leri gibi tek bir değişkene değil de bir çok değişkene ve mekanizmaya bağlı olmasındandır. Örneğin bir &#8220;dependency property&#8221;nin değerini okuduğunuzda &#8220;CoerceValueCallback&#8221; devreye girer. Bunun yanında bir &#8220;dependency property&#8221;nin değeri aşağıdaki sıraya göre belirlenir, </p>
<p>&#8220;FrameworkPropertyMetadata&#8221; ile atanmış &#8220;default&#8221; değer<br />
&#8220;Inherited&#8221; değer. (Eğer &#8220;FrameworkPropertyMetadata.Inherits&#8221; &#8220;true&#8221; ise ve hiyerarşide üstteki elementlerden birinde bu &#8220;dependency property&#8221; &#8220;set&#8221; edilmişse)<br />
&#8220;Theme style&#8221;dan gelen değer<br />
&#8220;Project style&#8221;dan gelen değer<br />
Koddan veya Xaml&#8217;dan atanmış lokal değer<br />
Bu sayede bir çok &#8220;control&#8221; özelliklerini paylaşılmış &#8220;dependency property&#8221;lerden alırlar, bu da son derece performanslı ve az &#8220;memory&#8221; kullanan bir mekanizmadır.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smartclient.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smartclient.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smartclient.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=9&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://smartclient.wordpress.com/2009/04/08/wpf-dependency-property-depends/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/866a3f330f5ee62086b62945d4b982a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smartclient</media:title>
		</media:content>
	</item>
		<item>
		<title>WPF :: &#8220;Could not create an instance of type&#8221;</title>
		<link>http://smartclient.wordpress.com/2009/04/06/wpf-could-not-create-an-instance-of-type/</link>
		<comments>http://smartclient.wordpress.com/2009/04/06/wpf-could-not-create-an-instance-of-type/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 13:37:30 +0000</pubDate>
		<dc:creator>smartclient</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://smartclient.wordpress.com/?p=5</guid>
		<description><![CDATA[Sık karşılaşılan problemlerden biri, WPF &#8220;designer&#8221;da UserControl kullandığınızda &#8220;designer&#8221;in bu hatayı vermesi. Çok sıkıcı bir hata çünkü hatanın nedenini gösteren bir bilgiye ulaşamıyorsunuz. Temelde hatanın nedeni, ilgili &#8220;UserControl&#8221;deki &#8220;Initialize&#8221; fonksiyonunda gerçekleşen adımlardan bazılarını &#8220;designer&#8221;ın çalıştıramaması. Aşağıdaki işlemleri yaparak hatanın nerden kaynaklandığını bulabilirsiniz.   Problemli projeyi iki ayrı &#8220;VS&#8221;da açın. (VS1 ve VS2 diyelim) Her iki [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=5&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div>Sık karşılaşılan problemlerden biri, WPF &#8220;designer&#8221;da UserControl kullandığınızda &#8220;designer&#8221;in bu hatayı vermesi. Çok sıkıcı bir hata çünkü hatanın nedenini gösteren bir bilgiye ulaşamıyorsunuz.<br />
Temelde hatanın nedeni, ilgili &#8220;UserControl&#8221;deki &#8220;Initialize&#8221; fonksiyonunda gerçekleşen adımlardan bazılarını &#8220;designer&#8221;ın çalıştıramaması. Aşağıdaki işlemleri yaparak hatanın nerden kaynaklandığını bulabilirsiniz.</div>
<div> </div>
<ol>
<li>Problemli projeyi iki ayrı &#8220;VS&#8221;da açın. (VS1 ve VS2 diyelim)</li>
<li>Her iki projede de bütün açık pencereleri (&#8220;source code&#8221; ve &#8220;designer&#8221;) kapatın.</li>
<li>VS2&#8242;de hatalı &#8220;UserControl&#8221;ün &#8220;constructor&#8221;ına &#8220;break point&#8221; koyun.</li>
<li>VS2&#8242;yi VS1&#8242;e &#8220;attach&#8221; edin.</li>
<li>VS1&#8242;de hatalı &#8220;UserControl&#8221;ü içeren Xaml&#8217;i açın.</li>
<li>VS2&#8242;deki &#8220;break point&#8221;de &#8220;step&#8221; ederek hatanın detayına ulaşabilirsiniz.</li>
</ol>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smartclient.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smartclient.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smartclient.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=5&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://smartclient.wordpress.com/2009/04/06/wpf-could-not-create-an-instance-of-type/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/866a3f330f5ee62086b62945d4b982a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smartclient</media:title>
		</media:content>
	</item>
		<item>
		<title>Wpf :: Dependency Propetry</title>
		<link>http://smartclient.wordpress.com/2009/04/05/wpf-dependency-propetry/</link>
		<comments>http://smartclient.wordpress.com/2009/04/05/wpf-dependency-propetry/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 20:09:35 +0000</pubDate>
		<dc:creator>smartclient</dc:creator>
				<category><![CDATA[WPF]]></category>

		<guid isPermaLink="false">http://smartclient.wordpress.com/?p=3</guid>
		<description><![CDATA[“Dependeny Property”ler (DP) entersan biçimde klasik .Net “property”lerinden tamamen farklı bir şekilde “implemente” edilmiştir. Temel neden ise daha performanslı olmaları ve gelişmiş mekanizmaları desteklemeleridir (“change notification”, “inheritance” gibi). DP’lerin “implementation”u farklı olsa bile onları aynı klasik .Net “property”lerini kullanır gibi kullanabiliriz. Nedir WPF’in özelliklerini (“data binding”, “style” gibi) kullanmak için geliştirilmiş yeni “property” “implementation”ıdır. Temel [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=3&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="margin:0 0 10pt;" dir="ltr"><span style="font-size:small;"><span style="font-family:Calibri;"><span style="color:#000000;">“Dependeny Property”ler (DP) entersan bi<span lang="TR">çimde klasik .Net “property”lerinden tamamen farklı bir şekilde “implemente” edilmiştir. Temel neden ise daha performanslı olmaları ve gelişmiş mekanizmaları desteklemeleridir (“change notification”, “inheritance” gibi). DP’lerin “implementation”u farklı olsa bile onları aynı klasik .Net “property”lerini kullanır gibi kullanabiliriz. </span></span></span></span></p>
<h3 style="margin:0 0 10pt;"><span lang="TR">Nedir</span></h3>
<p style="margin:0 0 10pt;"><span lang="TR"><span style="font-size:small;"><span style="font-family:Calibri;"><span style="color:#000000;">WPF’in özelliklerini (“data binding”, “style” gibi) kullanmak için geliştirilmiş yeni “property” “implementation”ıdır. Temel tasarım kriteri, klasik .Net “property”lerinin kullanım şekli işe DP’lerin kullanım şeklinin aynı olmasıdır. Bu tasarım gerçekleştirilirken klasik .Net “property”lerinin üzerinde çalışılmamış tamamen yeni bir mimari uygulanmıştır. Bunun temel nedeni ise performanstır. Eğer geliştiriciler DP’leri klasik .Net “property”leri üzerine inşa etmiş olsalardı, gerekli özellikleri sağlamak için çok fazla ekstra yük getiren kod parçacıkları yazmak zorunda kalacaklardı. Bunun yerine eski “property”ler gibi kullanılan tamamen yeni bir “property” geliştirdiler.</span></span></span></span></p>
<h3 style="margin:0 0 10pt;"><span lang="TR">Nasıl Uygulanır</span></h3>
<p style="margin:0 0 10pt;"><span lang="TR"><span style="font-size:small;"><span style="font-family:Calibri;"><span style="color:#000000;">DP’nin “syntax”ına alışılması biraz zor olsa da uygulaması aslında son derece basittir. Öncelikle “propeerty”mizi temsilen bir “shared” nesneye ihtiyacımız var. Örnek olarak System.Windows.UIElement sınıfında tanımlı “visibility” “property”sine bakalım.</span></span></span></span></p>
<blockquote>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">Public Class UIElement</span></span> </span></p>
<p style="text-indent:.5in;margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">Inherits Visual</span></span> </span></p>
<p style="text-indent:.5in;margin:0;"><span lang="TR"><span style="font-family:Consolas;color:#595959;font-size:x-small;">Implements IAnimatable, IInputElementPublic </span></span></p>
<p style="text-indent:.5in;margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;"> </span></span> </span></p>
<p style="text-indent:.5in;margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">Shared ReadOnly VisibilityProperty As DependencyProperty</span></span> </span></p>
<p style="text-indent:.5in;margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">&#8230;</span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">End Class</span></span> </span></p>
</blockquote>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Genel kural olarak DP’nin adı klasik “property” adının sonuna “Property” kelimesi eklenmesiyle oluşturulur. Yukardaki kodda görüldüğü üzere “VisibilityProperty” adında, “shared” ve “readonly” (sadece “public constructor”da değer atanacak şekilde) olan bir DependencyProperty tipinde bir nesne tanımlanmıştır. Ancak bu “property”nin kullanılabilir olması için öncelikle WPF’e bu “property”yi kayıt etmektir. Herhangi bir kod parçacığı bu “property”ye ulaşmaya çalışmadan bu kayıt işleminin yapılması gerekmektedir. Bu nedenle aşağıdaki koddaki gibi ilgili sınıfın “static constructor”unda bu işlem yapılmıştır.</span></p>
<blockquote>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;">Shared Sub New()</span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-size:x-small;"><span style="font-family:Consolas;">    Dim Mdata As New PropertyMetadata(VisibilityBoxes.VisibleBox, _</span></span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-size:x-small;"><span style="font-family:Consolas;"><span>       </span>New PropertyChangedCallback(AddressOf UIElement.OnVisibilityChanged), _</span></span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-size:x-small;"><span style="font-family:Consolas;"><span>       </span>New ValidateValueCallback(AddressOf UIElement.ValidateVisibility))</span></span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-family:Consolas;font-size:x-small;"> </span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-size:x-small;"><span style="font-family:Consolas;">    UIElement.VisibilityProperty = DependencyProperty.Register( _</span></span></span> </span></p>
<p style="margin:0;"><span style="color:#595959;"><span lang="TR"><span style="font-size:x-small;"><span style="font-family:Consolas;"><span>      </span>&#8220;Visibility&#8221;, GetType(Visibility), GetType(UIElement), Mdata)</span></span></span> </span></p>
<p style="margin:0;"><span lang="TR"><span style="font-family:Consolas;color:#595959;font-size:x-small;">End Sub</span></span></p>
</blockquote>
<div><span lang="TR"></span></div>
<p><span lang="TR"><span style="font-family:Consolas;color:#595959;font-size:x-small;"></p>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">DP kayıt işlemi iki adımdan oluşmaktadır. Bir, DP’nizle ilgili hangi servisleri kullanmak istediğinizi belirtiğiniz bir “FrameworkPropertyMetadata” oluşturulur. İki, “static” DependencyProperty.Register() metodunu kullanarak DP kayıt edilir. Bu aşamada sağlamanız gerekenler,</span></p>
<ul>
<li>
<div style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">“Property” için bir isim (öneğimizde “Visibility”)</span></div>
</li>
<li>
<div style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">“Property”nin very tipi (örneğimizde “Visibility” “Enum”u)</span></div>
</li>
<li>
<div style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">“Property”yi barındıran nesnenin tipi (örneğimizde “UIElement”)</span></div>
</li>
<li>
<div style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Opsiyonel, diğer<span>  </span>özellikler için “FrameworkPropertyMetadata” objesi</span></div>
</li>
<li>
<div style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Opsiyonel, “validation” için bir “callback”</span></div>
</li>
</ul>
<p> </p>
<p></span></p>
<h3 style="margin:0 0 10pt;">“Property Validation”</h3>
<div></div>
<p><span style="font-family:Consolas;color:#595959;font-size:x-small;"></p>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Klasik .Net “property”lerinde “validation” “property”nin tanımının içerisinde yapılır. Ancak DP’ler için parametre olarak bir “object” alan ve “boolean&#8221; değer dönen bir “callback” tanımlanır. “Validation”da hata yoksa “true” varsa “false” dönülür. Aşağıdaki fonksiyon bu işi yapar.</span></p>
<blockquote>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;">Private Shared Function ValidateVisibility(ByVal o As Object) As Boolean</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>Dim visibility As Visibility = DirectCast(o, Visibility)</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>If ((visibility &lt;&gt; Visibility.Visible) AndAlso (visibility &lt;&gt; Visibility.Hidden)) Then</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>        </span>Return (visibility = Visibility.Collapsed)</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>End If</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>Return True</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;">End Function</span></span></p>
</blockquote>
<div></div>
<p><span style="font-family:Consolas;color:#595959;font-size:x-small;"></p>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Bu “callback”lerle ilgili bir limitasyon, “static” olan “callback”in “validate” ettiği nesneye ulaşamamasıdır.</span></p>
<p> </p>
<p></span></span></p>
<p style="margin:0 0 10pt;"> </p>
<h3 style="margin:0 0 10pt;">“Property Wrapper”</h3>
<div></div>
<p><span style="font-family:Consolas;color:#595959;font-size:x-small;"></p>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Oluşturulan DP’nin klasik .Net “property”leri gibi kullanılabilinmesi için DP’nin değerine ulaşılmayı sağlayan klasik “property” tanımı yapılması gerekir.</span></p>
<blockquote>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;">Public Property Visibility As Visibility</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>Get</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>        </span>ReturnGetValue(VisibilityProperty)</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>End Get</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>Set(ByVal value As Visibility)</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>        </span>SetValue(VisibilityProperty, value)</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;"><span>    </span>End Set</span></span></p>
<p style="margin:0;"><span lang="TR"><span style="color:#595959;">End Property</span></span></p>
</blockquote>
<p style="margin:0 0 10pt;"><span style="font-family:Calibri;color:#000000;font-size:small;">Dikkat edilmesi gereken bir nokta da, bu “property” tanımına hiç bir ekstra satır eklenmemelidir.</span></p>
<p> </p>
<p></span></span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/smartclient.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/smartclient.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/smartclient.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=smartclient.wordpress.com&amp;blog=7246606&amp;post=3&amp;subd=smartclient&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://smartclient.wordpress.com/2009/04/05/wpf-dependency-propetry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/866a3f330f5ee62086b62945d4b982a5?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">smartclient</media:title>
		</media:content>
	</item>
	</channel>
</rss>
