1. 程式人生 > 其它 >WPF設計時繫結[Binding時提供智慧提示]

WPF設計時繫結[Binding時提供智慧提示]

摘要

在做WPF過程中,編寫前端UI時,如果還沒有對接資料來源,可能無法很直觀的看見頁面呈現效果,設計視窗也無法呈現直觀的設計效果,又或者在繫結時VS無法給予屬性提示等,那麼設計時繫結就可以比較友好的解決這一點。

設計時繫結與執行時(普通)繫結區別

類別 執行時(普通)繫結 設計時繫結
編寫Binding時是否有提示 ×
設計介面時是否能看見資料展示效果 ×
兩種繫結是否可以同時相容

如何實現

1、建立一個用於管理設計的靜態類

實體模型直接複用正常的模型就可以了,這裡直接給個初始值

2、在窗體中引用設計名稱空間

# WPF設計名稱空間
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
# 應用本地根名稱空間
xmlns:local="clr-namespace:BlankApp1"

3、為窗體引入設計時資料上下文

d:DataContext="{x:Static local:DesignInstance.designStudent}"

載入剛才編寫的靜態類,通過靜態類找到我們要繫結的屬性

4、編寫繫結

可以看出,現在不僅在編寫Binding時有提示,還能立馬呈現資料,這不比純手寫靠譜多了。

再給大家看看正常不使用設計時繫結編寫Binding時的效果:

5、啟動時還是會使用正常的資料上下文繫結

Tips:如果繫結失敗,那是因為預設上下文是整個ViewModel,而要繫結的欄位則是一個實體物件裡的一個屬性,所以在XAML中還需加上屬性名,或指定上下文為實體物件。如果屬性是直接寫在ViewModel中的則無需做這步操作。

總結

設計時繫結非常適合在初期還未對接真實資料或還在設計階段時使用,它能在設計介面時所見即所得,且能為繫結提示屬性,防止出錯。xmlns:d="http://schemas.microsoft.com/expression/blend/2008"該名稱空間除了設計時繫結,還提供了很多對於設計的輔助操作,如設計時寬度高度等,只需要在屬性前面加上名稱空間字首。