如何知道织梦模板中button的链接(织梦网站怎么添加关键词)

对于使用 avalonia 的时候某些功能需要到一些提示,比如异常或者成功都需要对用户进行提示,所以需要单独实现弹窗功能,并且可以自定义内部组件,这一期将手动实现一个简单的小弹窗,并且很容易自定义

创建项目

实现我们需要创建一个 avalonia MVVM的项目模板

并且取名 PopoverExample

然后一直默认创建。

创建弹窗组件

在 Views 文件夹中创建一个组件,选择 Window模板 ,创建名称 Dialog

然后打开 Dialog.axaml 文件,修改相关代码,

< Windowxmlns= "https://github.com/avaloniaui"

xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d= "http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc= "http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable= "d"d:DesignWidth= "800"d:DesignHeight= "450"

x:Class= "Dialog.Views.DialogBase"

ExtendClientAreaToDecorationsHint= "True"

ExtendClientAreaChromeHints= "NoChrome"

ExtendClientAreaTitleBarHeightHint= "-1"

Title= "DialogBase">

< StackPanel>

< Grid>

< GridHorizontalAlignment= "Left">

< TextBlock> 标题 </ TextBlock>

</ Grid>

< GridHorizontalAlignment= "Right">

< ButtonClick= "Close_OnClick"Name= "Close"> 关闭 </ Button>

</ Grid>

</ Grid>

< Grid>

< TextBlockName= "Content"> </ TextBlock>

</ Grid>

</ StackPanel>

</ Window>

以下代码是用于隐藏默认的标题栏的

ExtendClientAreaToDecorationsHint= "True"

ExtendClientAreaChromeHints= "NoChrome"

ExtendClientAreaTitleBarHeightHint= "-1"

打开 DialogBase.axaml.cs ,修改修改代码

usingAvalonia;

usingAvalonia.Controls;

usingAvalonia.Interactivity;

usingAvalonia.Markup.Xaml;

namespaceDialog.Views;

如何知道织梦模板中button的链接(织梦网站怎么添加关键词)

publicpartialclassDialogBase: Window

{

publicDialogBase( )

{

InitializeComponent;

# ifDEBUG

this.AttachDevTools;

# endif

}

privatevoidInitializeComponent( )

{

AvaloniaXamlLoader.Load( this);

}

privatevoidClose_OnClick( object? sender, RoutedEventArgs e )

{

Close;

}

}

创建 Dialog Manage类

创建 Dialog Manage类,用于管理 Dialog 创建 DialogManage.cs ,添加以下代码

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Threading.Tasks;

usingAvalonia;

usingAvalonia.Controls;

usingAvalonia.Threading;

namespaceDialog.Views;

publicstaticclassDialogManage

{

privatestaticreadonlyDictionary<DialogType, DialogBase> _dialogBases = new;

publicstaticvoidShow( DialogType type, stringcontent, intheight = 100, intwidth = 200, inttiming = 3000)

{

DialogBase dialog;

// 防止并发可自行修改

lock(_dialogBases)

{

if(_dialogBases.Remove(type, outvardialogBase))

{

try

{

dialogBase.Close;

}

catch

{

}

}

dialog = newDialogBase

{

Height = height,

Width = width,

WindowStartupLocation = WindowStartupLocation.Manual // 不设置的话无法修改窗口位置

};

if(timing > 0)

{

// 弹窗定时关闭

_ = Task.Run( async=>

{

awaitTask.Delay(timing);

// 先删除并且拿到删除的value

if(_dialogBases.Remove(type, outvardialogBase))

{

// 操作组件需要使用ui线程

_ = Dispatcher.UIThread.InvokeAsync( =>

{

try

{

// 关闭弹窗组件

dialogBase.Close;

}

// 可能已经被关闭所以可能会出现异常

catch

{

}

});

}

});

}

// 添加到字典中

_dialogBases.TryAdd(type, dialog);

}

// 获取当前屏幕

varbounds = dialog.Screens.ScreenFromVisual(dialog).Bounds;

// 偏移

intskewing = 20;

// window的任务栏高度

inttaskbar = 50;

intx, y;

switch(type)

{

caseDialogType.topLeft:

x = skewing;

y = skewing;

break;

caseDialogType.topCenter:

x = ( int)((bounds.Width - dialog.Width) / 2);

y = skewing;

break;

caseDialogType.topRight:

x = ( int)((bounds.Width - dialog.Width) - skewing);

y = skewing;

break;

caseDialogType.leftLower:

x = 20;

y = ( int)(bounds.Height - dialog.Height) - taskbar - skewing;

break;

caseDialogType.centerLower:

x = ( int)((bounds.Width - dialog.Width) / 2);

y = ( int)(bounds.Height - dialog.Height) - taskbar - skewing;

break;

caseDialogType.rightLower:

x = ( int)(bounds.Width - dialog.Width - skewing);

y = ( int)(bounds.Height - dialog.Height) - taskbar - skewing;

break;

default:

thrownewArgumentOutOfRangeException( nameof(type), type, null);

}

// 设置弹窗的位置

dialog.Position = newPixelPoint(x, y);

// 获取内容显示的组件并且将内容显示上去

varcontentBox = dialog.Find<TextBlock>( "Content");

contentBox.Text = content;

dialog.Show;

}

}

publicenumDialogType

{

///<summary>

///左上

///</summary>

topLeft,

///<summary>

///居中靠上

///</summary>

topCenter,

///<summary>

///右上

///</summary>

topRight,

///<summary>

///左下

///</summary>

leftLower,

///<summary>

///居中靠下

///</summary>

centerLower,

///<summary>

///右下

///</summary>

rightLower

}

对于弹窗组件已经完成,

基本使用弹窗

打开 MainWindow.axaml 文件修改代码

< Windowxmlns= "https://github.com/avaloniaui"

xmlns:x= "http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:vm= "using:Dialog.ViewModels"

xmlns:d= "http://schemas.microsoft.com/expression/blend/2008"

xmlns:mc= "http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable= "d"d:DesignWidth= "800"d:DesignHeight= "450"

x:Class= "Dialog.Views.MainWindow"

Height= "400"

Width= "400"

Icon= "/Assets/avalonia-logo.ico"

Title= "Dialog">

< Design.DataContext>

<!-- This only sets the DataContext for the previewer in an IDE,

to set the actual DataContext for runtime, set the DataContext property in code (look at App.axaml.cs) -->

< vm:MainWindowViewModel/>

</ Design.DataContext>

< StackPanelHorizontalAlignment= "Center">

< ButtonHeight= "40"Name= "OpenDialog"Click= "OpenDialog_OnClick"> 打开新弹窗 </ Button>

</ StackPanel>

</ Window>

打开 MainWindow.axaml.cs 修改相关代码

usingAvalonia.Controls;

usingAvalonia.Interactivity;

namespaceDialog.Views;

publicpartialclassMainWindow: Window

{

publicMainWindow( )

{

InitializeComponent;

}

// 定义枚举开始的值

privateinti = 0;

privatevoidOpenDialog_OnClick( object? sender, RoutedEventArgs e )

{

// 弹窗新窗口

DialogManage.Show((DialogType)i++, "弹窗内容:"+ i);

// 超过枚举值重新赋值

if(i == 6)

{

i = 0;

}

}

}

执行效果

来自token的分享


【免责声明】:

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

【关于转载】:

本站尊重互联网版权体系,本站部分图片、文章大部分转载于互联网、所有内容不代表本站观点、不对文章中的任何观点负责、转载的目的只用于给网民提供信息阅读,无任何商业用途,所有内容版权归原作者所有
如本站(文章、内容、图片、视频)任何资料有侵权,先说声抱歉;麻烦您请联系请后台提交工单,我们会立即删除、维护您的权益。非常感谢您的理解。

【附】:

二○○二年一月一日《计算机软件保护条例》第十七条规定:为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬!鉴于此,也希望大家按此说明研究软件!

注:本站资源来自网络转载,版权归原作者和公司所有,如果有侵犯到您的权益,请第一时间联系我们处理!

-----------------------------------------------------------------------------------------------------------

【版权声明】:

一、本站致力于为源码爱好者提供国内外软件开发技术和软件共享,着力为用户提供优资资源。
二、本站提供的源码下载文件为网络共享资源,请于下载后的24小时内删除。如需体验更多乐趣,还请支持正版。
三、如有内容侵犯您的版权或其他利益的,请编辑邮件并加以说明发送到站长邮箱。站长会进行审查之后,情况属实的会在三个工作日内为您删除。
-----------------------------------------------------------------------------------------------------------


内容投诉
源码村资源网 » 如何知道织梦模板中button的链接(织梦网站怎么添加关键词)

1 评论

您需要 登录账户 后才能发表评论

发表评论

欢迎 访客 发表评论