我意识到这个问题听起来有点奇怪,所以我会尽力解释。
我有一个用户控件,基本上是可以添加点的线,它根据数据绘制贝塞尔曲线,加上两个文本框,用于输入曲线的最小值和最大值。在调试用户控件本身时,一切似乎都在工作状态,所以我将项目导入到我正在处理的应用程序中。它完美显示,可见性切换工作(绑定到布尔值的复选框),上下文菜单功能无缝工作。唯一的问题是,在代码隐藏中,似乎没有任何改变。
如果我创建用户控件,然后在GUI中创建五个点并通过复选框隐藏它,如果我从代码隐藏(即UserControl.PointCollection)访问布尔值或点集合,则集合仅返回两个默认点,位于控件初始化时的位置。我知道我需要一个绑定来获得在GUI上出现的代码隐藏更改,是否有类似的要求GUI更改反映在代码中?我来自表格背景,这对我没有任何意义。
编辑:添加一些示例代码以帮助澄清
简化的示例对象:
namespace NodeViewHelper
{
public partial class TimelineNodeControl : UserControl
{
public int Maximum;
public TimelineNodeControl()
{
InitializeComponent();
this.Maximum=100;
}
public void increaseMax(){
this.Maximum++;
}
}
}
然后,该对象在XAML中被另一个对象多次实例化,作为模板的一部分
<myClass:TimelineNodeControl/>
无论调用maximumMax多少次,当我尝试访问parent.TimelineNodeControl.Maximum时,我得到100。
答案 0 :(得分:0)
感谢您的帮助(尽管由于某种原因只能看到一条评论)。正如Rachel所说,问题在于DataTemplate无法通过代码隐藏直接访问。我决定将TimelineNodeControl的唯一ID绑定到其父级(模型的)UID,然后在可视化树中搜索具有相同uid的TNC以直接访问TNC以及所有包含的变量。不得不经历地狱把模型变成DependencyObject,这是我最后一次修改别人的控件......