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

WPF常用技巧-原生子窗口嵌套/切換

這篇具有很好參考價(jià)值的文章主要介紹了WPF常用技巧-原生子窗口嵌套/切換。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在沒有使用MVVM框架導(dǎo)航功能的情況下,要實(shí)現(xiàn)子窗口在主窗口的嵌套,可以通過在主窗口中使用ContentControl容器控件來完成,子窗口使用用戶控件來構(gòu)建,然后作為內(nèi)容放入到主窗口的ContentControl中就OK了。

創(chuàng)建導(dǎo)航欄模型

public class MenuModel
{
    //導(dǎo)航標(biāo)題
    public string ManuTitle { get; set; }
    //導(dǎo)航所對(duì)應(yīng)的用戶控件路徑,例如WPFExample.Views.FirstPage
    public string TargetView { get; set; }
}

創(chuàng)建主窗口模型

public class MainModel : INotifyPropertyChanged
{
    //導(dǎo)航列表
    public List<MenuModel> MenuList { get; set; } = new List<MenuModel>();
    //嵌入的子窗口的標(biāo)題
    public string PageTitle { get; set; }
    //嵌入的子窗口對(duì)象
    private object _page;
    public object Page {
        get => _page; 
        set { 
            _page = value;
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Page"));
        } 
    }
    public event PropertyChangedEventHandler PropertyChanged;
}

創(chuàng)建命令基礎(chǔ)類型

public class CommandBase : ICommand
{
    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return true;
    }

    public Action<object> DoExecute { get; set; }
    public void Execute(object parameter)
    {
        DoExecute?.Invoke(parameter);
    }
}

創(chuàng)建主窗口的視圖模型

在主窗口視圖模型中定義窗口的一些業(yè)務(wù)邏輯處理、主窗口模型的創(chuàng)建及初始化。

internal class MainViewModel
{
    public MainModel MainModel { get; set; }

    public MainViewModel()
    {
        MainModel = new MainModel();
        MainModel.MenuList.Add(new MenuModel
        {
            ManuTitle = "第一個(gè)子窗口",
            TargetView="WPFExample.Views.FirstUserControl"
        });
        MainModel.MenuList.Add(new MenuModel
        {
            ManuTitle = "第二個(gè)子窗口",
            TargetView = "WPFExample.Views.SecondUserControl"
        });

        //默認(rèn)顯示第一個(gè)子窗口
        MainModel.PageTitle = MainModel.MenuList[0].ManuTitle;
        ShowPage(MainModel.MenuList[0].TargetView);
    }
    public void ShowPage(string targetView)
    {
        Type type = GetType().Assembly.GetType(targetView);
        MainModel.Page = Activator.CreateInstance(type);
    }

    public CommandBase GuideCommand
    {
        get
        {
            return new CommandBase
            {
                DoExecute = obj =>
                {
                    Type type = GetType().Assembly.GetType(obj.ToString());
                    MainModel.Page = Activator.CreateInstance(type);
                }
            };
        }
    }

}

在xaml中使用文章來源地址http://www.zghlxwxcb.cn/news/detail-804426.html

<Window ......
        xmlns:vm="clr-namespace:WPFExample.ViewModels"
        ......>
    <Window.DataContext>
        <vm:MainViewModel/>
    </Window.DataContext>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*"/>
            <ColumnDefinition Width="4*"/>
        </Grid.ColumnDefinitions>
        <ItemsControl ItemsSource="{Binding MainModel.MenuList}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Button Content="{Binding ManuTitle}" Tag="{Binding TargetView}" Height="40" Width="100"
                            Command="{Binding RelativeSource={RelativeSource AncestorType=Window},Path=DataContext.GuideCommand}"
                            CommandParameter="{Binding TargetView}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="1" >
                        
                    </UniformGrid>
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
        <ContentControl Grid.Row="0" Grid.Column="1" Content="{Binding MainModel.Page}" Name="cc"/>
		</Grid>
</Window>

到了這里,關(guān)于WPF常用技巧-原生子窗口嵌套/切換的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 如何使用 WPF 用戶控件關(guān)閉父窗口

    How to close parent windows using WPF User Control 如何使用 WPF 用戶控件關(guān)閉父窗口 【問題描述】 假設(shè)有兩個(gè)WPF窗口:window1和window2。 window1有一個(gè)按鈕,單擊此按鈕將打開window2。window2包含一個(gè)用戶控件。此用戶控件有一個(gè)用于關(guān)閉window2的按鈕。 怎樣才能實(shí)現(xiàn)這個(gè)場(chǎng)景呢? 【解決方案

    2024年02月15日
    瀏覽(38)
  • 【W(wǎng)PF】WindowChrome 自定義窗口完美實(shí)現(xiàn)

    【W(wǎng)PF】WindowChrome 自定義窗口完美實(shí)現(xiàn)

    Microsoft官網(wǎng)關(guān)于 WindowChome 的介紹 截取Microsoft文章的一段話: ??若要在保留其標(biāo)準(zhǔn)功能時(shí)自定義窗口,可以使用該 WindowChrome 類。 該 WindowChrome 類將窗口框架的功能與視覺對(duì)象分開,并允許你控制應(yīng)用程序窗口的客戶端和非客戶端區(qū)域之間的邊界。 通過 WindowChrome 該類,可

    2024年02月06日
    瀏覽(21)
  • WPF實(shí)戰(zhàn)學(xué)習(xí)筆記22-添加自定義詢問窗口

    詳細(xì)代碼:https://github.com/DongLiqiang/Mytodo/commit/221de6b2344d5c861f1d3b2fbb2480e3e3b35c26 添加自定義詢問窗口顯示方法 修改文件Mytodo.Extensions.DialogExtension 添加內(nèi)容,類中添加內(nèi)容 自定義窗體 自定義界面 添加文件Mytodo.Views.MsgView.xaml 添加窗體模型 添加文件:Mytodo.ViewModels.MsgViewModel 依賴

    2024年02月15日
    瀏覽(23)
  • WPF中DataContext的綁定技巧

    WPF中DataContext的綁定技巧

    先看效果: 上面的綁定值都是我們自定義的屬性,有了以上的提示,那么我們可以輕松綁定字段,再也不用擔(dān)心錯(cuò)誤了。附帶源碼。 目錄 1.建立mvvm項(xiàng)目 2.cs后臺(tái)使用DataContext綁定

    2024年02月07日
    瀏覽(21)
  • WPF 實(shí)現(xiàn)Popup不在最上層顯示、隨窗口移動(dòng)

    由于WPF 默認(rèn)的Popup總是顯示在所有窗口的前面,如何讓popup 層只顯示在該父級(jí)之上,并隨著父級(jí)而動(dòng)呢?下面來看實(shí)現(xiàn)。 代碼如下(示例):

    2024年01月20日
    瀏覽(28)
  • WPF本地化/國際化,多語言切換

    WPF本地化/國際化,多語言切換

    之前寫過winformwinform使用本地化,中英文切換_winform 中英文切換_故里2130的博客-CSDN博客 基本的技術(shù)差不多,但是后來又發(fā)現(xiàn)了一個(gè)ResXManager工具,可以更好方便快捷的使用。 首先下載,網(wǎng)絡(luò)不好的話,去官網(wǎng)下載,然后安裝,重啟vs即可 wpf做多語言切換 有很多種,可以使用

    2024年02月11日
    瀏覽(27)
  • C# wpf 實(shí)現(xiàn)任意控件(包括窗口)更多調(diào)整大小功能

    C# wpf 實(shí)現(xiàn)任意控件(包括窗口)更多調(diào)整大小功能

    第一節(jié) Grid內(nèi)控件拖動(dòng)調(diào)整大小 第二節(jié) Canvas內(nèi)控件拖動(dòng)調(diào)整大小 第三節(jié) 窗口拖動(dòng)調(diào)整大小 第四節(jié) 附加屬性實(shí)現(xiàn)拖動(dòng)調(diào)整大小 第五章 拓展更多調(diào)整大小功能(本章) 上一章我們已經(jīng)實(shí)現(xiàn)了任意控件統(tǒng)一的拖動(dòng)調(diào)整功能,能夠方便的給任意控件設(shè)置拖動(dòng)調(diào)整大小。開發(fā)過程

    2024年01月18日
    瀏覽(22)
  • WPF 入門教程Grid使用技巧

    WPF 入門教程Grid使用技巧

    在上一章中,我們向您介紹了出色的 Grid 面板,并向您展示了一些有關(guān)如何使用它的基本示例。在本章中,我們將進(jìn)行一些更高級(jí)的布局,因?yàn)檫@是 Grid 真正閃耀的地方。首先,讓我們加入更多的列甚至一些行,以獲得真正的表格布局: 總共九個(gè)按鈕,每個(gè)按鈕都放置在自己

    2024年02月06日
    瀏覽(31)
  • C# WPF實(shí)現(xiàn)動(dòng)畫漸入暗黑明亮主題切換效果

    C# WPF實(shí)現(xiàn)動(dòng)畫漸入暗黑明亮主題切換效果

    最近在Bilibili的桌面端看到一個(gè)黑白主題切換的效果感覺,挺有意思。于是我使用WPF嘗試實(shí)現(xiàn)該效果。 主要的切換效果,基本實(shí)現(xiàn)不過還存在一些小瑕疵,比如字體等筆刷不能跟隨動(dòng)畫進(jìn)入進(jìn)行切換。因?yàn)锽ilibili的客戶端是用electron寫的,前端使用的html,css確實(shí)太強(qiáng)了,這咱只

    2024年02月16日
    瀏覽(22)
  • WPF 已知問題 RadioButton 指定 GroupName 后關(guān)閉窗口可能導(dǎo)致無法選中

    本文記錄一個(gè) WPF 已知問題,當(dāng) WPF 的 RadioButton 指定 GroupName 且將 IsChecked 狀態(tài)綁定到 ViewModel 上,將包含以上控件的代碼的窗口顯示兩個(gè),接著關(guān)閉其中一個(gè)。此時(shí)可以看到依然開著的窗口的 RadioButton 控件無法正確在用戶界面上點(diǎn)擊選中 此問題已經(jīng)報(bào)告給 WPF 官方,請(qǐng)看 ht

    2024年02月08日
    瀏覽(25)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包