首页> 资讯 > 详情

2023-7-27WPF的ContextMenu的传参绑定方式

2023-07-27 18:11:05来源:博客园


(资料图片仅供参考)

WPF的ContextMenu的绑定方式

【作者】长生

ContextMenu为何不能正常绑定

在wpf中ContextMenu和ToolTip一样都是弹出层,与VisualTree已经分离了,只不过ToolTip在wpf中有进行特殊处理,所以可以正常绑定。

个人觉得ContextMenu绑定的最可靠的方式

  1. 首先添加BindingProxy类,继承Freezable,Freezable权限很高,可以实现可靠的数据绑定。
  2. 添加依赖属性object,方便传值。
public class BindingProxy : Freezable    {        protected override Freezable CreateInstanceCore()        {            return new BindingProxy();        }        public object Data        {            get { return (object)GetValue(DataProperty); }            set { SetValue(DataProperty, value); }        }        // Using a DependencyProperty as the backing store for Data.  This enables animation, styling, binding, etc...        public static readonly DependencyProperty DataProperty =            DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new PropertyMetadata(null));    }
  1. 在xaml页面资源中添加命名空间,并添加控件绑定
xmlns:viewModel="clr-namespace:xxxxxxx"//绑定到需要传值的控件
  1. 在Context将改控件绑定到CommandParameter,即可对其进行传参。当然也可以直接绑定到ContextMenu上的DataContext,这样就可以直接对Command和ComandParameter进行绑定,再次我就不一一列举了。
   
  1. 当然也可以引用外部资源DiscreteObjectKeyFrame进行绑定,方法和上述类似

使用PlacementTarget

在WPF中,PlacementTarget是一个属性,用于指定弹出式控件(如ContextMenu、ToolTip等)的放置目标。它定义了弹出式控件相对于哪个元素进行定位和显示。PlacementTarget属性通常用于设置弹出式控件的放置位置。例如,当使用ContextMenu时,可以将ContextMenu的PlacementTarget属性设置为一个控件,以便在该控件上右键单击时显示ContextMenu。这样,ContextMenu将相对于该控件进行定位并显示。

 

结尾

感谢您的阅读,如果有收获麻烦点个关注!⭐其他平台公众号:【长生小殿】B站:【月长生殿主】

标签:

上一篇:在比亚迪SUV歌已经推出的中国汽车市场上价格开始于96.900元
下一篇:最后一页