![](/img/trans.png)
[英]C# WPF - The name “…” does not exist in the namespace “clr-namespace:…”
[英]How to set a clr-namespace property programatically in WPF
我是WPF的新手,所以不确定问题的标题是否正确或有任何意义,请对其进行编辑,以使其更相关。 我在应用程序中使用Kinect.Toolbox MouseControl。 对于使用磁性控件,我有一个问题。 我知道可以通过添加以下内容在XAML中进行定义:
<Page ...
xmlns:local ="clr-namespace:Kinect.Toolbox;assembly=Kinect.Toolbox">
...
<Button local:MagneticPropertyHolder.IsMagnetic="True" ... />
....
但是我需要在代码中做到这一点。 无论如何,是否可以在代码中设置磁性控件? 我可以像这样在页面中获取所有控件:
public static IEnumerable<T> FindVisualChildren<T>(DependencyObject depObj) where T : DependencyObject
{
if (depObj != null)
{
for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
{
DependencyObject child = VisualTreeHelper.GetChild(depObj, i);
if (child != null && child is T)
{
yield return (T)child;
}
foreach (T childOfChild in FindVisualChildren<T>(child))
{
yield return childOfChild;
}
}
}
}
foreach (Button tb in FindVisualChildren<Button>(this))
{
//Set the buttons to be magnetic
}
但是我不明白如何编程设置它们。
这看起来像一个附加属性 。
要进行设置,您需要执行以下操作
tb.SetValue(MagneticPropertyHolder.IsMagneticProperty, true);
或可能
MagneticPropertyHolder.SetIsMagnetic(tb, true);
快速浏览一下Kinect工具箱源代码,可以发现两者都可以使用。 第二个是类型安全的。
请参见后面的代码中如何访问附件属性? 欲获得更多信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.