* 重构多页面框架传值
This commit is contained in:
parent
347e919de8
commit
ec7d24e8e0
@ -2140,6 +2140,7 @@ namespace Sunny.UI
|
||||
}
|
||||
|
||||
page.Frame = this;
|
||||
page.OnFrameDealPageParams += Page_OnFrameDealPageParams;
|
||||
MainTabControl?.AddPage(page);
|
||||
return page;
|
||||
}
|
||||
@ -2196,27 +2197,16 @@ namespace Sunny.UI
|
||||
|
||||
public bool ExistPage(Guid pageGuid) => GetPage(pageGuid) != null;
|
||||
|
||||
public bool SendParamToPage(int pageIndex, UIPageParamsArgs e)
|
||||
{
|
||||
SetDefaultTabControl();
|
||||
UIPage page = GetPage(pageIndex);
|
||||
page?.DealReceiveParams(e);
|
||||
return e.Handled;
|
||||
}
|
||||
|
||||
public bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e)
|
||||
{
|
||||
SetDefaultTabControl();
|
||||
UIPage page = GetPage(pageGuid);
|
||||
page?.DealReceiveParams(e);
|
||||
return e.Handled;
|
||||
}
|
||||
|
||||
public bool SendParamToPage(int pageIndex, object value)
|
||||
{
|
||||
SetDefaultTabControl();
|
||||
UIPage page = GetPage(pageIndex);
|
||||
var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame);
|
||||
if (page == null)
|
||||
{
|
||||
throw new NullReferenceException("未能查找到页面的索引为: " + pageIndex);
|
||||
}
|
||||
|
||||
var args = new UIPageParamsArgs(null, page, value);
|
||||
page?.DealReceiveParams(args);
|
||||
return args.Handled;
|
||||
}
|
||||
@ -2225,14 +2215,27 @@ namespace Sunny.UI
|
||||
{
|
||||
SetDefaultTabControl();
|
||||
UIPage page = GetPage(pageGuid);
|
||||
var args = new UIPageParamsArgs(null, value, UIParamSourceType.Frame);
|
||||
if (page == null)
|
||||
{
|
||||
throw new NullReferenceException("未能查找到页面的索引为: " + pageGuid);
|
||||
}
|
||||
|
||||
var args = new UIPageParamsArgs(null, page, value);
|
||||
page?.DealReceiveParams(args);
|
||||
return args.Handled;
|
||||
}
|
||||
|
||||
public virtual void DealReceiveParams(UIPageParamsArgs e)
|
||||
private void Page_OnFrameDealPageParams(object sender, UIPageParamsArgs e)
|
||||
{
|
||||
ReceiveParams?.Invoke(this, e);
|
||||
if (e == null) return;
|
||||
if (e.DestPage == null)
|
||||
{
|
||||
ReceiveParams?.Invoke(this, e);
|
||||
}
|
||||
else
|
||||
{
|
||||
e.DestPage?.DealReceiveParams(e);
|
||||
}
|
||||
}
|
||||
|
||||
public event OnReceiveParams ReceiveParams;
|
||||
|
@ -52,12 +52,6 @@ namespace Sunny.UI
|
||||
|
||||
bool ExistPage(Guid pageGuid);
|
||||
|
||||
bool SendParamToPage(int pageIndex, UIPageParamsArgs e);
|
||||
|
||||
bool SendParamToPage(Guid pageGuid, UIPageParamsArgs e);
|
||||
|
||||
void DealReceiveParams(UIPageParamsArgs e);
|
||||
|
||||
void Init();
|
||||
|
||||
void Final();
|
||||
@ -75,12 +69,12 @@ namespace Sunny.UI
|
||||
|
||||
public class UIPageParamsArgs : EventArgs
|
||||
{
|
||||
public UIPage Page { get; set; }
|
||||
public UIPage SourcePage { get; set; }
|
||||
|
||||
public UIPage DestPage { get; set; }
|
||||
|
||||
public object Value { get; set; }
|
||||
|
||||
public UIParamSourceType SourceType { get; set; }
|
||||
|
||||
public bool Handled { get; set; } = false;
|
||||
|
||||
public UIPageParamsArgs()
|
||||
@ -88,19 +82,13 @@ namespace Sunny.UI
|
||||
|
||||
}
|
||||
|
||||
public UIPageParamsArgs(UIPage page, object value, UIParamSourceType sourceType)
|
||||
public UIPageParamsArgs(UIPage sourcePage, UIPage destPage, object value)
|
||||
{
|
||||
Page = page;
|
||||
SourcePage = sourcePage;
|
||||
DestPage = destPage;
|
||||
Value = value;
|
||||
SourceType = sourceType;
|
||||
}
|
||||
}
|
||||
|
||||
public enum UIParamSourceType
|
||||
{
|
||||
Frame,
|
||||
Page
|
||||
}
|
||||
|
||||
public delegate void OnReceiveParams(object sender, UIPageParamsArgs e);
|
||||
}
|
||||
|
@ -832,28 +832,42 @@ namespace Sunny.UI
|
||||
get; set;
|
||||
}
|
||||
|
||||
internal event OnReceiveParams OnFrameDealPageParams;
|
||||
|
||||
public bool SendParamToFrame(object value)
|
||||
{
|
||||
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
|
||||
Frame?.DealReceiveParams(args);
|
||||
var args = new UIPageParamsArgs(this, null, value);
|
||||
OnFrameDealPageParams?.Invoke(this, args);
|
||||
return args.Handled;
|
||||
}
|
||||
|
||||
public bool SendParamToPage(int pageIndex, object value)
|
||||
{
|
||||
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
|
||||
Frame?.SendParamToPage(pageIndex, args);
|
||||
UIPage page = Frame.GetPage(pageIndex);
|
||||
if (page == null)
|
||||
{
|
||||
throw new NullReferenceException("未能查找到页面的索引为: " + pageIndex);
|
||||
}
|
||||
|
||||
var args = new UIPageParamsArgs(this, page, value);
|
||||
OnFrameDealPageParams?.Invoke(this, args);
|
||||
return args.Handled;
|
||||
}
|
||||
|
||||
public bool SendParamToPage(Guid pageGuid, object value)
|
||||
{
|
||||
var args = new UIPageParamsArgs(this, value, UIParamSourceType.Page);
|
||||
Frame?.SendParamToPage(pageGuid, args);
|
||||
UIPage page = Frame.GetPage(pageGuid);
|
||||
if (page == null)
|
||||
{
|
||||
throw new NullReferenceException("未能查找到页面的索引为: " + pageGuid);
|
||||
}
|
||||
|
||||
var args = new UIPageParamsArgs(this, page, value);
|
||||
OnFrameDealPageParams?.Invoke(this, args);
|
||||
return args.Handled;
|
||||
}
|
||||
|
||||
public virtual void DealReceiveParams(UIPageParamsArgs e)
|
||||
internal void DealReceiveParams(UIPageParamsArgs e)
|
||||
{
|
||||
ReceiveParams?.Invoke(this, e);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user