關於XAML,C#和WPF的更多思考的更多思考
原文:More thoughts on more thoughts on XAML, C# and WPF
Charles在他的blog上,對我提出的關於WPF資料上下文和WPF可以忽略C#程式碼的闡述提出了疑問。
我也會盡我所能捍衛我的闡述。
具體來講,我很少從DependencyOjbect繼承物件,並且就從我觀察到的來看,離開了它,XAML和WPF在資料繫結上執行的都還不錯。
XAML所依賴的只是公有的可設定的屬性和不帶引數的公有的建構函式。單向的資料繫結也有類似的需求。
對於雙向的資料繫結,如果你執行了舊的pre-WPF介面INotifyPropertyChanged,執行起來也很棒,並且這種繫結實現起來也特別不值一提。
下面是我寫的一段C#程式碼,我希望通過它來說明這個問題:
public class Author : INotifyPropertyChanged {
string name;
bool lovesXaml;
public bool LovesXaml {
get { return lovesXaml; }
set { lovesXaml = value; Notify("LovesXaml"); }
}
public string Name {
get { return name; }
set { name = value; Notify("Name"); }
}
// boilerplate INotifyPropertyChanged code
void Notify(string name) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public event PropertyChangedEventHandler PropertyChanged;
}
string name;
bool lovesXaml;
public bool LovesXaml {
get { return lovesXaml; }
set { lovesXaml = value; Notify("LovesXaml"); }
}
public string Name {
get { return name; }
set { name = value; Notify("Name"); }
}
// boilerplate INotifyPropertyChanged code
void Notify(string name) {
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(name));
}
public event PropertyChangedEventHandler PropertyChanged;
}
接下來是一個簡單的WPF/XAML視窗,我們可以用一個DataTemplate來生成和編輯它:
<Window x:Class='Petzold.Window1'
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:local='clr-namespace:Petzold'
Title='Petzold'
>
<ItemsControl>
<local:Author Name='Charles Petzold' LovesXaml='true'/>
='Chris Sells' LovesXaml='false'/>
='Ian Griffiths' LovesXaml='true'/>
='Chris Anderson' LovesXaml='false'/>
='Adam Nathan' LovesXaml='true'/>
>
<Window.Resources>
<DataTemplate DataType='{x:Type local:Author}'>
<StackPanel>
<StackPanel Orientation='Horizontal'>
xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'
xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
xmlns:local='clr-namespace:Petzold'
Title='Petzold'
>
<ItemsControl>
<local:Author Name='Charles Petzold' LovesXaml='true'/>
='Chris Sells' LovesXaml='false'/>
='Ian Griffiths' LovesXaml='true'/>
='Chris Anderson' LovesXaml='false'/>
='Adam Nathan' LovesXaml='true'/>
>
<Window.Resources>
<DataTemplate DataType='{x:Type local:Author}'>
<StackPanel>
<StackPanel Orientation='Horizontal'>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1619924
相關文章
- 關於Fork和Malloc的思考
- 關於重寫equals()和hashCode()的思考
- 關於難點的思考
- 關於面試的思考面試
- 作業系統思考 第五章 更多的位與位元組作業系統
- 關於主資料的實踐和思考
- 關於樹上路徑異或和的思考
- 關於限流實現的思考
- 關於中介軟體的思考
- 關於Flux,Vuex,Redux的思考VueRedux
- 關於工廠模式的思考模式
- 關於寫部落格的思考
- 關於JS的物件導向的思考和總結JS物件
- 關於程式碼版本管理的思考和建議
- 關於近期幣安事件的思考事件
- 關於 Method Swizzling 的一點思考
- 關於同步的一點思考-下
- 關於 PHP 框架的簡單思考PHP框架
- 關於研發效能提升的思考
- 關於運營邊界的思考
- 關於CodeReview的一些思考View
- 關於git flow的一點思考Git
- 關於知識付費的思考
- 最近關於工作的幾點思考
- 關於DDD和COLA的一些總結和思考
- 關於2021年的一些收穫和思考
- 關於遞迴和回溯的一次深入思考遞迴
- 大魚思考---有關190億$的思考
- 關於點贊業務對MySQL和Redis和MongoDB的思考MySqlRedisMongoDB
- 關於 Angular HttpClient 的單例特性的思考AngularHTTPclient單例
- WPF Button Command and CommandParamet completed via C# no xaml at allC#
- 關於社交圈子的一點思考
- 關於PHP協程與阻塞的思考PHP
- 關於資料視覺化的思考視覺化
- 關於-生物資訊-入門-的思考
- 關於 Masonry 的一些思考(下)
- 關於開發流的一點思考
- 關於農業種植的若干思考
- 關於黑暗力量(BlackEnergy)的一點思考