国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

WPF實戰(zhàn)學習筆記22-添加自定義詢問窗口

這篇具有很好參考價值的文章主要介紹了WPF實戰(zhàn)學習筆記22-添加自定義詢問窗口。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

添加自定義詢問窗口

詳細代碼:https://github.com/DongLiqiang/Mytodo/commit/221de6b2344d5c861f1d3b2fbb2480e3e3b35c26

添加自定義詢問窗口顯示方法

修改文件Mytodo.Extensions.DialogExtension

添加內容,類中添加內容

/// <summary>
/// 顯示方法
/// </summary>
/// <param name="name"></param>
/// <param name="parameters"></param>
/// <param name="dialogHostName"></param>
/// <returns></returns>
public static async Task<IDialogResult> Question(this IDialogHostService dialogHost,string Title, string Content, string dialogHostName = "Root")
{
    DialogParameters  param = new DialogParameters();

    //添加參數
    param.Add("Title", Title);
    param.Add("Content", Content);
    param.Add("DialogHostName", dialogHostName);

    //返回對話框實例
    return await dialogHost.ShowDialog("MsgView",param, dialogHostName); 
}

自定義窗體

自定義界面

添加文件Mytodo.Views.MsgView.xaml

<UserControl
    x:Class="Mytodo.Views.MsgView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:local="clr-namespace:Mytodo.ViewModels"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    d:DesignHeight="450"
    d:DesignWidth="800"
    mc:Ignorable="d">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="auto" />
            <RowDefinition />
            <RowDefinition Height="auto" />
        </Grid.RowDefinitions>

        <TextBlock
            Padding="5"
            d:Text="溫馨提示"
            FontSize="14"
            Text="{Binding Title}" />

        <TextBlock
            Grid.Row="1"
            Padding="15,0"
            VerticalAlignment="Center"
            d:Text="確認刪除該數據嗎?"
            FontSize="14"
            Text="{Binding Content}" />

        <StackPanel
            Grid.Row="2"
            Margin="10"
            HorizontalAlignment="Right"
            Orientation="Horizontal">
            <Button
                Margin="0,0,10,0"
                Command="{Binding CancelCommand}"
                Content="取消"
                Style="{StaticResource MaterialDesignOutlinedButton}" />
            <Button Command="{Binding SaveCommand}" Content="確定" />
        </StackPanel>
    </Grid>
</UserControl>

添加窗體模型

添加文件:Mytodo.ViewModels.MsgViewModel

using MaterialDesignThemes.Wpf;
using Mytodo.Dialog;
using MyToDo.Share.Models;
using Prism.Commands;
using Prism.Mvvm;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Mytodo.ViewModels
{
    class MsgViewModel
        : BindableBase, IDialogHostAware
        {
            #region 命令定義

                #endregion


                #region 屬性定義


                /// <summary>
                /// 對話框內容
                /// </summary>
                public string Content
            {
                get { return content; }
                set { content = value; }
            }


            /// <summary>
            /// 對話框標題 
            /// </summary>
            public string Title
            {
                get { return title; }
                set { title = value; }
            }

            #endregion


                #region 重要字段定義

                #endregion


                #region 字段定義
                private string content;
            private string title;
            #endregion
                public MsgViewModel()
            {
                SaveCommand = new DelegateCommand(Save);
                CancelCommand = new DelegateCommand(Cancel);
            }

            /// <summary>
            /// 取消
            /// </summary>
            private void Cancel()
            {
                if (DialogHost.IsDialogOpen(DialogHostName))
                    DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.No)); //取消返回NO告訴操作結束
            }

            /// <summary>
            /// 確定
            /// </summary>
            private void Save()
            {
                if (DialogHost.IsDialogOpen(DialogHostName))
                {
                    //確定時,把編輯的實體返回并且返回OK
                    DialogParameters param = new DialogParameters();
                    DialogHost.Close(DialogHostName, new DialogResult(ButtonResult.OK, param));
                }
            }

            public string DialogHostName { get; set; }
            public DelegateCommand SaveCommand { get; set; }
            public DelegateCommand CancelCommand { get; set; }

            public void OnDialogOpend(IDialogParameters parameters)
            {
                //獲取Title
                if (parameters.ContainsKey("Title"))
                    Title = parameters.GetValue<string>("Title");
                //獲取Content
                if (parameters.ContainsKey("Content"))
                    Content = parameters.GetValue<string>("Content");
            }
        }
}

依賴注入

修改:App.xaml.cs

RegisterTypes函數添加

containerRegistry.RegisterForNavigation<MsgView, MsgViewModel>();

使用

主界面

修改文件:Mytodo.Views.MainView.cs

修改為

using Mytodo.Common.Events;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using Prism.Events;
using Mytodo.Extensions;
using MaterialDesignThemes.Wpf;
using Mytodo.Dialog;
using Prism.Ioc;

namespace Mytodo.Views
{
    /// <summary>
    /// MainView.xaml 的交互邏輯
    /// </summary>
    public partial class MainView : Window
    { 

        private readonly IDialogHostService dialoghost;

        /// <summary>
        /// 訂閱消息
        /// </summary>
        public MainView(IEventAggregator aggregator,IContainerProvider provider)
        {
            //檢索實例
            dialoghost= provider.Resolve<IDialogHostService>();

            aggregator.Register(arg =>
            {
                DialogHost.IsOpen = arg.IsOpen;

                if (DialogHost.IsOpen)
                    DialogHost.DialogContent = new ProgressView();
            });

            InitializeComponent();

            menuBar.SelectionChanged += (s, e) =>
            {
                drawerHost.IsLeftDrawerOpen = false;
            };

             btnclo.Click += async  (s, e) =>
            {
                //展開確認對話框
                var queres = await DialogExtension.Question(dialoghost, "溫馨提示", $"是否要關閉此程序?");
                if (queres.Result != Prism.Services.Dialogs.ButtonResult.OK) return;
                this.Close();
            };

            btnmin.Click += (s, e) =>
            {
                this.WindowState = WindowState.Minimized;
            };

            btnmax.Click += (s, e) =>
            {
                this.WindowState = WindowState.Maximized;
            };

            ColorZone.MouseMove += (s, e) =>
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                    this.DragMove();
            };

            ColorZone.MouseDoubleClick += (s, e) =>
            {
                if (WindowState != WindowState.Normal)
                    WindowState = WindowState.Normal;
                else
                    WindowState = WindowState.Maximized;
            };
        }
    }
}

待辦

修改文件Mytodo.ViewModels.TodoViewModel.cs

添加內容

private readonly IDialogHostService dialoghost;

修改內容:

public TodoViewModel(ITodoService service,IContainerProvider provider) : base(provider)
{
    //檢索對話框的實例
    dialoghost = provider.Resolve<DialogHostService>();

    //初始化對象
    TodoDtos = new ObservableCollection<ToDoDto>();  
    RightContentTitle = "添加血雨待辦";

    //初始化命令
    SelectedCommand         = new DelegateCommand<ToDoDto>(Selected);
    OpenRightContentCmd     = new DelegateCommand(Add);
    ExecuteCommand          = new DelegateCommand<string>(ExceuteCmd);
    DeleteCommand           = new DelegateCommand<ToDoDto>(DeleteItem);

    this.service = service;
}        
/// <summary>
/// 刪除指定項
/// </summary>
/// <param name="dto"></param>
async private void DeleteItem(ToDoDto dto)
{
    //展開確認對話框
    var queres = await DialogExtension.Question(dialoghost, "溫馨提示", $"是否要刪除此項?{dto.Title}?");
    if (queres.Result != Prism.Services.Dialogs.ButtonResult.OK) return;


    var delres = await service.DeleteAsync(dto.Id);

    if (delres.Status)
    {
        var model = TodoDtos.FirstOrDefault(t => t.Id.Equals(dto.Id));
        TodoDtos.Remove(dto);
    }
}
備忘錄

修改文件Mytodo.ViewModels.MemoViewModel.cs

添加內容

 private readonly IDialogHostService dialoghost;

修改內容文章來源地址http://www.zghlxwxcb.cn/news/detail-616761.html

/// <summary>
/// 刪除指定項
/// </summary>
/// <param name="dto"></param>
async private void DeleteItem(MemoDto dto)
{
    //展開確認對話框
    var queres = await DialogExtension.Question(dialoghost,"溫馨提示",$"是否要刪除此項?{dto.Title}?");
    if (queres.Result != Prism.Services.Dialogs.ButtonResult.OK) return;

    var delres = await service.DeleteAsync(dto.Id);

    if (delres.Status)
    {
        var model = MemoDtos.FirstOrDefault(t => t.Id.Equals(dto.Id));
        MemoDtos.Remove(dto);
    }
}
public MemoViewModel(IMemoService service, IContainerProvider provider) : base(provider)
{
    //初始化對象
    MemoDtos = new ObservableCollection<MemoDto>();
    RightContentTitle = "添加備忘率";

    //初始化命令
    SelectedCommand = new DelegateCommand<MemoDto>(Selected);
    OpenRightContentCmd = new DelegateCommand(Add);
    ExecuteCommand = new DelegateCommand<string>(ExceuteCmd);
    DeleteCommand = new DelegateCommand<MemoDto>(DeleteItem);

    //檢索DialogHostService類型的實例
    dialoghost = provider.Resolve<DialogHostService>();

    this.service = service;
}

到了這里,關于WPF實戰(zhàn)學習筆記22-添加自定義詢問窗口的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • WPF實戰(zhàn)學習筆記17-TodoView 添加新增、編輯、查詢功能

    修改TodoViewModel.cs 修改XAML 添加引用 添加綁定 添加項目的雙擊事件 修改ToDoService 修改MyToDo.Api/Service/ToDoService.cs

    2024年02月15日
    瀏覽(22)
  • WPF實戰(zhàn)學習筆記25-首頁匯總

    注意:本實現與視頻不一致。本實現中單獨做了匯總接口,而視頻中則合并到國todo接口當中了。 添加匯總webapi接口 添加匯總數據客戶端接口 總數據客戶端接口對接3 首頁數據模型 添加數據匯總字段類 新建文件MyToDo.Share.Models.SummaryDto 添加匯總webapi接口 添加匯總接口 添加文

    2024年02月15日
    瀏覽(19)
  • WPF實戰(zhàn)學習筆記26-首頁導航

    修改UI,添加單擊行為,并綁定導航命令 修改文件:Mytodo.Views.IndexView.xaml ,在導航梯形添加內容 添加導航命令,并初始化 修改文件:indexviewmodel.cs 添加導航區(qū)域變量,并初始化 修改文件:indexviewmodel.cs 添加導航方法 TaskBars添加對應的導航區(qū)域 修改OnNavigate方法 當為“已完成

    2024年02月15日
    瀏覽(43)
  • WPF實戰(zhàn)學習筆記27-全局通知

    新建消息事件 添加文件:Mytodo.Common.Events.MessageModel.cs 注冊、發(fā)送提示消息 UI增加Snackbar 修改文件:Mytodo.Views.MainView.xaml 注冊消息 修改文件:Mytodo.Views.MainViewcs 構造函數添加 要注意的是,我們要發(fā)送的是文本,所以,this.skbar.MessageQueue.Enqueue函數內發(fā)送的是文本。 在需要的地

    2024年02月15日
    瀏覽(17)
  • WPF實戰(zhàn)學習筆記28-登錄界面

    添加登錄界面UI 添加文件loginview.xaml。注意本界面使用的是md內的圖標。沒有登錄界面的圖片 添加對應的viewmodel 添加文件Mytodo.ViewModels.LoginViewModel.cs 注冊視圖 添加啟動 修改文件:App.xmal.cs

    2024年02月14日
    瀏覽(14)
  • WPF實戰(zhàn)學習筆記04-菜單導航

    添加文件與文件夾 添加文件夾 ? ./Extensions 添加文件 類型:用戶控件 ./Views/IndexView.xaml ./Views/MemoView.xaml ./Views/TodoView.xaml ./Views/SettingsView.xaml ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./ViewModels/IndexViewModel.cs ./Extensions/PrismManager.cs 建立View與Vie

    2024年02月16日
    瀏覽(18)
  • WPF實戰(zhàn)學習筆記16-數據加載

    新建Update事件,增加Prism事件列表 新建文件Mytodo/Common/Events/UpdateLoadingEvent.cs 新建含加載窗體基類 新建文件Mytodo/ViewModels/NavigationViewModel.cs 建立數據加載窗體擴展方法 新建文件Mytodo/Extensions/DialogExtension.cs 主窗口命名 修改文件Mytodo/Extensions/DialogExtension.cs 主窗口訂閱消息 修改文

    2024年02月15日
    瀏覽(22)
  • WPF實戰(zhàn)學習筆記31-登錄界面全局通知

    UI添加消息聚合器 注冊提示消息 文件:Mytodo.Views.LoginView.cs構造函數添加內容 在需要的地方添加提示消息 修改文件:Mytodo.ViewModels.LoginViewModel.cs

    2024年02月14日
    瀏覽(24)
  • WPF實戰(zhàn)學習筆記08-創(chuàng)建數據庫

    創(chuàng)建文件夾 ./Context 創(chuàng)建文件 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs ./Context/Todo.cs ./Context/User.cs 創(chuàng)建數據對象 ./Context/BaseEnity.cs ./Context/Memo.cs ./Context/MyTodoContext.cs 創(chuàng)建數據庫DbSet ./Context/Todo.cs ./Context/User.cs 添加nuget包 Microsoft.EntityFrameworkCore.Design Shared design-time co

    2024年02月16日
    瀏覽(46)
  • WPF實戰(zhàn)學習筆記10-創(chuàng)建todo接口

    新建控制器 新建文件 + webapi工程 ./Controllers/TodoController.cs 添加類 ### 新建服務 #### 新建文件 + webapi工程 ./Service/ApiReponse.cs ./Service/IBaseService.cs ./Service/IToDoService.cs ./Service/ToDoService.cs 添加通用返回結果類 ApiReponse.cs 添加基礎接口 IBaseService.cs 添加todo接口 IToDoService.cs 添加TODO接口

    2024年02月16日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包