WPF 自定義內容的彈窗


目標是重復使用固定的彈窗樣式,並提供確認和取消按鈕,而彈窗的具體內容則由傳參決定。
為了達到目的,使用ContentControl設置內容,並通過新增ShowDialog方法為確認按鈕添加業務邏輯。
效果如圖:

綠色框的部分為自定義內容

關鍵代碼

設置ContentControl

<ContentControl Grid.Row="0" Margin="0" x:Name="contentContainer"  />
public CustomDialog(UserControl control, string title, Window window = null)
{
    InitializeComponent();

    Title = title;
    //設置內容
    contentContainer.Content = control;
}

新增ShowDialog方法

public void ShowDialog(Func<bool> onOKCallback)
{
    btnOK.Click += (s1, e1) => {
        try
        {
            var fOK = true;
            if (onOKCallback != null)
            {
                fOK = onOKCallback();
            }
            if (fOK)
            {
                Close();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "錯誤", MessageBoxButton.OK, MessageBoxImage.Error);
        }
    };
    ShowDialog();
}

調用彈窗,TestCustomDialogContentControl是自定義內容

CustomDialog dialog = new CustomDialog(new TestCustomDialogContentControl(), "自定義彈窗");
dialog.ShowDialog(()=> 
{
    return true;
});

關於ShowInTaskbar="False"的問題,請看解決ShowInTaskbar=false的窗口在失去焦點后無法找到的問題

示例代碼

CustomDialogs

參考資料

ContentControl 類


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM