Posts

Showing posts from March, 2012

WPF Data Binding 基礎練習

Image
良好的資料繫結作法可以:讓開發人員在擅長的領域中, 操作資料 (物件, 變數) 而視覺設計者有更大得彈性, 可以任意新增、修改、刪除 XAML 中的控制項 "資料繫結" 的主要原則: 將資料透過繫結控制項後 後續要取得使用者輸入的值時, 直接從物件讀取 , 而非控制項。

{範例} WPF 應用程式框架設計

Image
在前一篇(WPF Base Control 設計要項) 有提到如何在 User Control 中關閉父視窗, 本文範例是再延伸設計, 通常一個應用程式中會實作許多的視窗與控制項, 如何讓這些控制項與視窗之前, 保持著有關係而且可以是鬆散的架構.

{範例} WPF Base Control 設計要項

在 WPF 程式新增一個 UserControl 時, 預設是繼承自 System.Windows.Controls.UserControl,若將父層換為自己所撰寫的類別, Base Control 程式碼如下:namespace WpfControlBase
{
publicclass ControlBase : UserControl
{
public System.Windows.Window ParentWindow { get; set; }
}
}

在繼承的 UserControl 中有兩個步驟

1. C# 或 VB 檔案中, UserControl 中繼承此類別

publicpartialclass UserControl1 : WpfControlBase.ControlBase
{

}

2. 修改 xaml 檔案的宣告

<WpfCB:ControlBasex:Class="CloseShowDialog.UserControl1"
xmlns:WpfCB="clr-namespace:WpfControlBase;assembly=WpfControlBase">

筆者有個案例是, 在 UserControl 中要關閉視窗, 透過 Parent 找不到 Windows 物件,

暫時想到的解決方法是, 每一次動態載入UserControl 時, 透過 BaseControl 將視窗傳入,

後續要關閉視窗就由此屬性進行。

download code

以上是參考 <wpf user control base class problem> 討論.

{範例} WPF在Windows XP上播放音效

Image
要在WPF中播放音效,透過 Multimedia 相關的API可以很容易完成
(可參閱: http://msdn.microsoft.com/en-us/library/aa970915.aspx )。但若需要在Windows XP上執行,需要注意幾件事: