首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏独立观察员博客

    【编辑】解决 Wpf TabControl 在所有选项卡上仅创建一个视图 的问题

    dependencyObject) { if (dependencyObject == null) return null; return void SetCachedItemsSource(DependencyObject dependencyObject, IEnumerable value) { if (dependencyObject public static Type GetItemsContentTemplate(DependencyObject dependencyObject) { if ( dependencyObject, IEnumerable value) { if (dependencyObject ! dependencyObject, DependencyPropertyChangedEventArgs e) { TabControl control = dependencyObject

    3.2K10编辑于 2024-11-23
  • 来自专栏dino.c的专栏

    [WPF自定义控件库]好用的VisualTreeExtensions

    static IEnumerable<DependencyObject> GetVisualAncestorsAndSelf(this DependencyObject element) { } /// 获取 visual tree 上的子元素 public static IEnumerable<DependencyObject> GetVisualChildren(this DependencyObject (this DependencyObject element) { } /// 获取 visual tree 上的后代元素 public static IEnumerable<DependencyObject static IEnumerable<DependencyObject> GetVisualDescendantsAndSelf(this DependencyObject element) { } public static IEnumerable<DependencyObject> GetVisualSiblingsAndSelf(this DependencyObject element) {

    1.5K30发布于 2019-07-12
  • 来自专栏walterlv - 吕毅的博客

    WPF 中的 NameScope

    dependencyObject, INameScope value) { if (dependencyObject == null) throw new ArgumentNullException (nameof(dependencyObject)); dependencyObject.SetValue(NameScopeProperty, value); } public static INameScope GetNameScope(DependencyObject dependencyObject) { if (dependencyObject == null) throw new ArgumentNullException(nameof(dependencyObject)); return ((INameScope)dependencyObject.GetValue d, out DependencyObject scopeOwner) { while (d !

    1.2K20发布于 2020-02-10
  • 来自专栏技术之路

    WPF 得到子指定元素方法和得到指定子元素集合方法MvvM得到焦点

    里找到想要的元素 /// childName可为空,不为空就按名字找 /// public static T FindChild<T>(DependencyObject parent, string childName) where T : DependencyObject { if (parent == </param> /// <returns></returns> public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject { if (depObj ! int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { DependencyObject

    1.4K50发布于 2018-01-31
  • 来自专栏dino.c的专栏

    [UWP]附加属性1:概述

    </param> /// <returns>Left 依赖项属性的值</returns> public static double GetLeft(DependencyObject obj) { </param> public static void SetLeft(DependencyObject obj, double value) { obj.SetValue(LeftProperty </param> /// <returns>Left 依赖项属性的值</returns> public static double GetLeft(DependencyObject obj) { 实现静态的属性访问器函数,名称必须是GetPropertyName 和SetPropertyName,如例子中的public static double GetLeft(DependencyObject obj)和public static void SetLeft(DependencyObject obj, double value)。

    1K40发布于 2019-01-18
  • 来自专栏林德熙的博客

    WPF 绑定继承的样式提示 只能根据带有基类型 IFrameworkInputElement 的目标类型的 Style 样式

    Style oldStyle, Style newStyle, Style& styleCache) at System.Windows.FrameworkElement.OnStyleChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs (DependencyPropertyChangedEventArgs args) at System.Windows.DependencyObject.UpdateEffectiveValue( coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType) at System.Windows.DependencyObject.SetValueCommon Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal) at System.Windows.DependencyObject.SetValue

    1K10编辑于 2022-08-12
  • 来自专栏林德熙的博客

    WPF 绑定密码

    IsUpdating", typeof(bool), typeof(PasswordHelper)); public static void SetAttach(DependencyObject { dp.SetValue(AttachProperty, value); } public static bool GetAttach(DependencyObject dp.SetValue(PasswordProperty, value); } private static bool GetIsUpdating(DependencyObject 我们需要设置Attach,设置时调用static void Attach(DependencyObject sender, DependencyPropertyChangedEventArgs param name="eventArgs">the event args</param> private static void OnPasswordPropertyChanged(DependencyObject

    1.2K10发布于 2018-09-18
  • 来自专栏林德熙的博客

    WPF UncommonField 类型是什么

    这个类是解决DependencyObject 使用很多内存。使用这个类可以作为轻量的DependencyObject 因为他使用很少的内存。 因为使用了DependencyObject 就会创建很多默认的值,无论使用的是TextBox.Text的依赖属性还是Grid.Row附加的,都会有很多不需要使用的值。 如果使用UncommonField就会去掉很多元数据、校验、通知,UncommonField会使用和DependencyObject 相同的机制,让他可以存放在DependencyObject 中和其他存放的属性一样 instance. /// /// <param name="instance">The DependencyObject on which to instance. /// /// <param name="instance">The DependencyObject from which

    71010发布于 2018-09-18
  • 来自专栏DotNet程序园

    DotNetCore 3.0 助力 WPF本地化

    local.Substring(idx + 1)); return tuple; } } public class Translation : DependencyObject dependencyObject) { return (ResourceManager)dependencyObject.GetValue(ResourceManagerProperty ); } public static void SetResourceManager(DependencyObject dependencyObject, ResourceManager value) { dependencyObject.SetValue(ResourceManagerProperty, value); } dependencyObject) { object localValue = dependencyObject.ReadLocalValue(

    84120发布于 2019-08-23
  • 来自专栏林德熙的博客

    win10 uwp 绑定密码

    SetIsUpdating(passwordBox, false); 然后写 private static void OnPasswordPropertyChanged(DependencyObject passwordBox.PasswordChanged += PasswordChanged private static void OnPasswordPropertyChanged(DependencyObject PasswordBoxHelper), new PropertyMetadata(default(bool),Attach)); public static void SetAttach(DependencyObject element.SetValue(AttachProperty, value); } public static bool GetAttach(DependencyObject PasswordBoxHelper), new PropertyMetadata(default(bool))); public static void SetIsUpdating(DependencyObject

    87310发布于 2018-09-18
  • 来自专栏JusterZhu

    一站式WPF--依赖属性(DependencyProperty)一

    然后定义了DependencyObject来使用DP。 这里,DependencyObject相比NormalObject,减少了_name的储存空间4字节。 再进一步   万里长征第一步,这个想法可以解决我们希望的问题,这个做法还不能让人接受。 在这个实现中,所有DependencyObject共用一个DP,这个可以理解,但修改一个对象的属性后,所有对象的属性相当于都被修改了,这个就太可笑了。    所以对象属性一旦被修改,这个还是要维护在自己当中的,修改一下前面的DependencyObject,引入一个有效(Effective)的概念。 改进的DependencyObject,加入了_effectiveValues: 1: public class DependencyObject 2: { 3: private

    1.1K30编辑于 2023-09-18
  • 来自专栏dino.c的专栏

    [UWP]附加属性2:实现一个Canvas

    public static double GetLeft(DependencyObject obj) { return (double)obj.GetValue(LeftProperty); } public static void SetLeft(DependencyObject obj, double value) { obj.SetValue(LeftProperty, value obj) { return (double)obj.GetValue(TopProperty); } public static void SetTop(DependencyObject obj = null) parent.InvalidateArrange(); } 当Left改变时调用OnLeftChanged,这里DependencyObject obj就是被附加了Left </param> /// <returns>Top 依赖项属性的值</returns> public static double GetTop(DependencyObject obj)

    70140发布于 2019-01-18
  • 来自专栏dino.c的专栏

    [UWP 自定义控件]了解模板化控件(6):使用附加属性

    </param> /// <returns>ExtendHeader 依赖项属性的值</returns> public static object GetExtendHeader(DependencyObject </param> /// <returns>ExtendHeader 依赖项属性的值</returns> public static object GetExtendHeader(DependencyObject </param> public static void SetExtendHeader(DependencyObject obj, object value) { obj.SetValue </param> /// <returns>Header 依赖项属性的值</returns> public static object GetHeader(DependencyObject </param> public static void SetHeader(DependencyObject obj, object value) { obj.SetValue

    84730发布于 2019-01-18
  • 来自专栏个人编程笔记

    C#-ListBox多选绑定

    return (IList)obj.GetValue(SelectedItemsProperty); } public static void SetSelectedItems(DependencyObject obj.SetValue(SelectedItemsProperty, value); } public static void OnSelectedItemsChanged(DependencyObject sender,SelectionChangedEventArgs e) { IList dataSource = GetSelectedItems(sender as DependencyObject obj.SetValue(SelectedItemsProperty, value); } public static void OnSelectedItemsChanged(DependencyObject sender,SelectionChangedEventArgs e) { IList dataSource = GetSelectedItems(sender as DependencyObject

    1K20编辑于 2024-12-19
  • 来自专栏码客

    WPF桌面端开发2-ItemsControl和ListBox获取点击行的索引

    namespace ZJClassTool.Views { public class MyListBox : ListBox { protected override DependencyObject dep = (DependencyObject)e.OriginalSource; while ((dep ! parent, string childName) where T : DependencyObject { if (parent == null) return parent, string childName) where T : DependencyObject { var list = new List<T> i_dp) where T : DependencyObject { DependencyObject dobj = VisualTreeHelper.GetParent

    3.4K30发布于 2020-05-09
  • 来自专栏林德熙的博客

    win10 uwp InkCanvas控件数据绑定

    Windows.UI.Xaml.Controls; public static class InkCanvasBinder { public static InkStrokeContainer GetInkStrokes(DependencyObject obj.GetValue(InkStrokesProperty) as InkStrokeContainer; public static void SetInkStrokes(DependencyObject , InkStrokesProperty_PropertyChanged)); private static void InkStrokesProperty_PropertyChanged(DependencyObject

    32920编辑于 2022-08-07
  • 来自专栏林德熙的博客

    WPF 被输入法带崩进程

    System.Windows.RoutedEventArgs, Boolean) 在 System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject , Boolean, Boolean, Boolean) 在 System.Windows.Input.KeyboardDevice.Focus(System.Windows.DependencyObject , System.Windows.DependencyPropertyChangedEventArgs) 在 System.Windows.DependencyObject.OnPropertyChanged (System.Windows.DependencyPropertyChangedEventArgs) 在 System.Windows.DependencyObject.UpdateEffectiveValue System.Windows.RoutedEventArgs, Boolean) 在 System.Windows.UIElement.ReRaiseEventAs(System.Windows.DependencyObject

    53830编辑于 2021-12-23
  • 来自专栏walterlv - 吕毅的博客

    如何在 WPF 中获取所有已经显式赋过值的依赖项属性

    ---- 需要用到 DependencyObject.GetLocalValueEnumerator() 方法来获得一个可以遍历所有依赖项属性本地值。 1 2 3 4 5 6 7 8 9 10 11 public static void DoWhatYouLikeByWalterlv(DependencyObject dependencyObject) { var enumerator = dependencyObject.GetLocalValueEnumerator(); while (enumerator.MoveNext())

    7K40编辑于 2023-10-22
  • 来自专栏林德熙的博客

    WPF 给 Grid 的辅助方法 添加行列名称绑定

    typeof(GridExtensions), new PropertyMetadata(default(string))); public static void SetName(DependencyObject element.SetValue(NameProperty, value); } public static string GetName(DependencyObject } } } } public static void SetRowName(DependencyObject element.SetValue(RowNameProperty, value); } public static string GetRowName(DependencyObject default(string), ColumnName_PropertyChanged)); private static void ColumnName_PropertyChanged(DependencyObject

    1.1K10编辑于 2022-08-12
  • 来自专栏林德熙的博客

    WPF 冷知识 定义依赖属性的最大数量是 65534 个

    void Add() { // 写入静态字段只是为了触发静态构造函数 _count++; } } public partial class Type2 : DependencyObject void Add() { // 写入静态字段只是为了触发静态构造函数 _count++; } } public partial class Type3 : DependencyObject void Add() { // 写入静态字段只是为了触发静态构造函数 _count++; } } public partial class Type0 : DependencyObject void Add() { // 写入静态字段只是为了触发静态构造函数 _count++; } } public partial class Type4 : DependencyObject void Add() { // 写入静态字段只是为了触发静态构造函数 _count++; } } public partial class Type6 : DependencyObject

    39910编辑于 2023-11-29
领券