標簽:shadow chm usb 對象 繼承 white 耦合 占用 lan
WPF的設計理念是:數據驅動,UI與邏輯松耦合
public class Person
{
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
}
// 1. 使类型繼承DependencyObject类
public class Person : DependencyObject
{
// 2. 声明一个静态只读的DependencyProperty 字段
public static readonly DependencyProperty nameProperty;
static Person()
{
// 3. 注册定义的依赖属性
nameProperty = DependencyProperty.Register("Name", typeof(string), typeof(Person),
new PropertyMetadata("Learning Hard",OnValueChanged));
}
// 4. 属性包装器,通过它来读取和设置我们刚才注册的依赖属性
public string Name
{
get { return (string)GetValue(nameProperty); }
set { SetValue(nameProperty, value); }
}
private static void OnValueChanged(DependencyObject dpobj, DependencyPropertyChangedEventArgs e)
{
// 当只发生改变时回调的方法
}
}
1、依赖属性声明为:类的静态只读對象;
2、依賴屬性是通過DependencyObject注冊的屬性;
3、依賴屬性讀取是通過DependencyObject的方法讀取;
4、類的依賴屬性只有一份,且由DependecyObject維護。
5、多级繼承,且大多数字段值不改变的情况下,减少内存占比
?DependencyProperty将一个對象依赖属性存储在一个全局的Hashtable中;通过依赖對象(DependencyObject)的GetValue和SetValue存取数据;
6、?依赖属性值可以通过Binding依赖于其它對象上,这就使得数据源一变动;依赖于此数据源的依赖属性全部进行更新
1、依赖属性(值传递)繼承
中邏輯樹上實際父級變動,在子級沒有顯式指定值時,默認采用父級的值
?如下圖中:窗體上所有的字體都變大(從20變成了50),並不需要通過設置每個控件的屬性;只需要設置窗體的屬性,這個窗體的子控件就會適應這一改變,並且使用相同的設置
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Title="WPF Example" SizeToContent="WidthAndHeight"
FontSize="50" FontStyle="Italic"
Background="Blue">
<StackPanel>
<Label FontWeight="Bold" FontSize="20" Foreground="White">
Hi There!
</Label>
<Label>2015 Solidmango</Label>
<ListBox>
<ListBoxItem>Item1</ListBoxItem>
<ListBoxItem>Item2</ListBoxItem>
</ListBox>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Center">
<Button MinWidth="75" Margin="10">Help</Button>
<Button MinWidth="75" Margin="10">OK</Button>
</StackPanel>
<StatusBar>Solidmango</StatusBar>
</StackPanel>
</Window>
2、屬性的改變通知
CLR属性只有通过事件响应函数或者回调函数来传递属性性改变; 依赖属性只需配置就可以(见第三部分的示例)
更詳細的介绍参见依賴屬性的傳遞
標簽:shadow chm usb 對象 繼承 white 耦合 占用 lan
原文地址:https://www.cnblogs.com/MonoHZ/p/14944137.html