开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
1 Star 0 Fork 1

WPF 界面/SharpDevelop

forked from KribKing/SharpDevelop
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (14)
标签 (60)
master
4.x
nuget-3.0-ctp
reports
filemodels
newNR
newNRILSpyDebugger
addin-manager-package-subdirectories
newNRvisualizers
4.2
4.1
formsdesignerappdomain
4.0
shortcuts
v5.1-archival
5.0.0
5.0-RC1
5.0-Beta5
5.0-Beta4
5.0-Beta3
5.0-Beta2
4.4.1
5.0-Beta1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.3-Beta1
4.2.2
4.2.1
4.2.0
4.2-RC1
4.2-Beta2
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (14)
标签 (60)
master
4.x
nuget-3.0-ctp
reports
filemodels
newNR
newNRILSpyDebugger
addin-manager-package-subdirectories
newNRvisualizers
4.2
4.1
formsdesignerappdomain
4.0
shortcuts
v5.1-archival
5.0.0
5.0-RC1
5.0-Beta5
5.0-Beta4
5.0-Beta3
5.0-Beta2
4.4.1
5.0-Beta1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.3-Beta1
4.2.2
4.2.1
4.2.0
4.2-RC1
4.2-Beta2
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (14)
标签 (60)
master
4.x
nuget-3.0-ctp
reports
filemodels
newNR
newNRILSpyDebugger
addin-manager-package-subdirectories
newNRvisualizers
4.2
4.1
formsdesignerappdomain
4.0
shortcuts
v5.1-archival
5.0.0
5.0-RC1
5.0-Beta5
5.0-Beta4
5.0-Beta3
5.0-Beta2
4.4.1
5.0-Beta1
4.4.0
4.3.3
4.3.2
4.3.1
4.3.0
4.3-Beta1
4.2.2
4.2.1
4.2.0
4.2-RC1
4.2-Beta2
SharpTreeNodeView.cs 5.35 KB
一键复制 编辑 原始数据 按行查看 历史
Daniel Grunwald 提交于 2014年01月26日 00:06 +08:00 . Change LGPL headers to MIT header.
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
// without restriction, including without limitation the rights to use, copy, modify, merge,
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
// to whom the Software is furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all copies or
// substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Controls;
using System.Windows;
using System.Windows.Controls.Primitives;
using System.Windows.Media;
using System.Windows.Input;
using System.ComponentModel;
using System.Collections.Specialized;
namespace ICSharpCode.TreeView
{
public class SharpTreeNodeView : Control
{
static SharpTreeNodeView()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(SharpTreeNodeView),
new FrameworkPropertyMetadata(typeof(SharpTreeNodeView)));
}
public static readonly DependencyProperty TextBackgroundProperty =
DependencyProperty.Register("TextBackground", typeof(Brush), typeof(SharpTreeNodeView));
public Brush TextBackground
{
get { return (Brush)GetValue(TextBackgroundProperty); }
set { SetValue(TextBackgroundProperty, value); }
}
public SharpTreeNode Node
{
get { return DataContext as SharpTreeNode; }
}
public SharpTreeViewItem ParentItem { get; private set; }
public static readonly DependencyProperty CellEditorProperty =
DependencyProperty.Register("CellEditor", typeof(Control), typeof(SharpTreeNodeView),
new FrameworkPropertyMetadata());
public Control CellEditor {
get { return (Control)GetValue(CellEditorProperty); }
set { SetValue(CellEditorProperty, value); }
}
public SharpTreeView ParentTreeView
{
get { return ParentItem.ParentTreeView; }
}
internal LinesRenderer LinesRenderer { get; private set; }
public override void OnApplyTemplate()
{
base.OnApplyTemplate();
LinesRenderer = Template.FindName("linesRenderer", this) as LinesRenderer;
UpdateTemplate();
}
protected override void OnVisualParentChanged(DependencyObject oldParent)
{
base.OnVisualParentChanged(oldParent);
ParentItem = this.FindAncestor<SharpTreeViewItem>();
ParentItem.NodeView = this;
}
protected override void OnPropertyChanged(DependencyPropertyChangedEventArgs e)
{
base.OnPropertyChanged(e);
if (e.Property == DataContextProperty) {
UpdateDataContext(e.OldValue as SharpTreeNode, e.NewValue as SharpTreeNode);
}
}
void UpdateDataContext(SharpTreeNode oldNode, SharpTreeNode newNode)
{
if (newNode != null) {
newNode.PropertyChanged += Node_PropertyChanged;
if (Template != null) {
UpdateTemplate();
}
}
if (oldNode != null) {
oldNode.PropertyChanged -= Node_PropertyChanged;
}
}
void Node_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == "IsEditing") {
OnIsEditingChanged();
} else if (e.PropertyName == "IsLast") {
if (ParentTreeView.ShowLines) {
foreach (var child in Node.VisibleDescendantsAndSelf()) {
var container = ParentTreeView.ItemContainerGenerator.ContainerFromItem(child) as SharpTreeViewItem;
if (container != null) {
container.NodeView.LinesRenderer.InvalidateVisual();
}
}
}
} else if (e.PropertyName == "IsExpanded") {
if (Node.IsExpanded)
ParentTreeView.HandleExpanding(Node);
}
}
void OnIsEditingChanged()
{
var textEditorContainer = Template.FindName("textEditorContainer", this) as Border;
if (Node.IsEditing) {
if (CellEditor == null)
textEditorContainer.Child = new EditTextBox() { Item = ParentItem };
else
textEditorContainer.Child = CellEditor;
}
else {
textEditorContainer.Child = null;
}
}
void UpdateTemplate()
{
var spacer = Template.FindName("spacer", this) as FrameworkElement;
spacer.Width = CalculateIndent();
var expander = Template.FindName("expander", this) as ToggleButton;
if (ParentTreeView.Root == Node && !ParentTreeView.ShowRootExpander) {
expander.Visibility = Visibility.Collapsed;
}
else {
expander.ClearValue(VisibilityProperty);
}
}
internal double CalculateIndent()
{
var result = 19 * Node.Level;
if (ParentTreeView.ShowRoot) {
if (!ParentTreeView.ShowRootExpander) {
if (ParentTreeView.Root != Node) {
result -= 15;
}
}
}
else {
result -= 19;
}
if (result < 0) {
Debug.WriteLine("Negative indent level detected for node " + Node);
result = 0;
}
return result;
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/wpf-interface/SharpDevelop.git
git@gitee.com:wpf-interface/SharpDevelop.git
wpf-interface
SharpDevelop
SharpDevelop
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /