52 Star 382 Fork 147

csharpui/CPF

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
CpfElementManager.cs 2.93 KB
一键复制 编辑 原始数据 按行查看 历史
小红帽 提交于 2024-01-09 00:39 +08:00 . razor支持
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
//using Microsoft.MobileBlazorBindings.Core;
using System;
using System.Diagnostics;
namespace CPF.Razor
{
internal class CpfElementManager : ElementManager<ICpfElementHandler>
{
protected override bool IsParented(ICpfElementHandler handler)
{
return handler.Element.Parent != null;
}
protected override void AddChildElement(
ICpfElementHandler parentHandler,
ICpfElementHandler childHandler,
int physicalSiblingIndex)
{
if (parentHandler.Element is CPF.Controls.Panel panel)
{
if (physicalSiblingIndex <= panel.Children.Count)
{
panel.Children.Insert(physicalSiblingIndex, childHandler.Element);
}
else
{
//Debug.WriteLine($"WARNING: {nameof(AddChildElement)} called with {nameof(physicalSiblingIndex)}={physicalSiblingIndex}, but parentControl.Controls.Count={parentHandler.Control.Controls.Count}");
panel.Children.Add(childHandler.Element);
}
}
else if (parentHandler.Element is CPF.Controls.View win)
{
if (physicalSiblingIndex <= win.Children.Count)
{
win.Children.Insert(physicalSiblingIndex, childHandler.Element);
}
else
{
win.Children.Add(childHandler.Element);
}
}
else if (parentHandler.Element is CPF.Controls.ContentControl contentControl)
{
contentControl.Content = childHandler.Element;
}
else
{
Debug.Fail("未实现添加控件");
}
}
protected override int GetPhysicalSiblingIndex(
ICpfElementHandler handler)
{
return (handler.Element.Parent as CPF.Controls.Panel).Children.IndexOf(handler.Element);
}
protected override void RemoveElement(ICpfElementHandler handler)
{
if (handler.Element.Parent is CPF.Controls.Panel panel)
{
panel.Children.Remove(handler.Element);
}
else if (handler.Element.Parent is CPF.Controls.View win)
{
win.Children.Remove(handler.Element);
}
else if (handler.Element.Parent is CPF.Controls.ContentControl contentControl)
{
contentControl.Content = null;
}
else
{
Debug.Fail("未实现移除控件");
}
}
protected override bool IsParentOfChild(ICpfElementHandler parentHandler, ICpfElementHandler childHandler)
{
return childHandler.Element.Parent == parentHandler.Element;
}
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/csharpui/CPF.git
git@gitee.com:csharpui/CPF.git
csharpui
CPF
CPF
master

搜索帮助