WPF Base Control 設計要項
在 WPF 程式新增一個 UserControl 時, 預設是繼承自 System.Windows.Controls.UserControl,
若將父層換為自己所撰寫的類別, Base Control 程式碼如下:
namespace WpfControlBase
{
public class ControlBase : UserControl
{
public System.Windows.Window ParentWindow { get; set; }
}
}
在繼承的 UserControl 中有兩個步驟
1. C# 或 VB 檔案中, UserControl 中繼承此類別
public partial class UserControl1 : WpfControlBase.ControlBase
{
}
2. 修改 xaml 檔案的宣告
<WpfCB:ControlBase x:Class="CloseShowDialog.UserControl1"
xmlns:WpfCB="clr-namespace:WpfControlBase;assembly=WpfControlBase" >
筆者有個案例是, 在 UserControl 中要關閉視窗, 透過 Parent 找不到 Windows 物件,
暫時想到的解決方法是, 每一次動態載入UserControl 時, 透過 BaseControl 將視窗傳入,
後續要關閉視窗就由此屬性進行。
以上是參考 <這篇> 討論.