Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Can';t从代码隐藏访问ControlTemplate的内容_C#_Wpf_Xaml - Fatal编程技术网

C# Can';t从代码隐藏访问ControlTemplate的内容

C# Can';t从代码隐藏访问ControlTemplate的内容,c#,wpf,xaml,C#,Wpf,Xaml,这是我的XAML。UserControl名为“事件” 但它不起作用:“rect”变量为null。我做错了什么 谢谢它返回了null,因为函数FindName(“controlName”,TemplatedParent)需要一个控件,模板将作为第二个参数应用于该控件。从您提供的代码中,我看不到模板何时应用于控件(ev用于默认模板)。因此,rect变量为空 试试这个 var rectangle = MoveThumb.Template.FindName("rect", MoveThumb) as R

这是我的XAML。UserControl名为“事件”

但它不起作用:“rect”变量为null。我做错了什么


谢谢

它返回了null,因为函数FindName(“controlName”,TemplatedParent)需要一个控件,模板将作为第二个参数应用于该控件。从您提供的代码中,我看不到模板何时应用于控件(ev用于默认模板)。因此,rect变量为空

试试这个

var rectangle = MoveThumb.Template.FindName("rect", MoveThumb) as Rectangle;

更多信息可用,

它返回了null,因为函数FindName(“controlName”,TemplatedParent)需要一个控件,模板将作为第二个参数应用于该控件。从您提供的代码中,我看不到模板何时应用于控件(ev用于默认模板)。因此,rect变量为空

试试这个

var rectangle = MoveThumb.Template.FindName("rect", MoveThumb) as Rectangle;

更多信息可用,

您定义的模板应用于
Thumb
控件,而不是
事件
控件-这就是
事件
的模板中没有
rect
控件的原因

由于您是从另一个类创建
事件
控件,因此可以将
MoveThumb
控件作为
事件
的代码隐藏中的属性公开,如下所示:

public Thumb TheThumb
{
    get { return MoveThumb; }
}
然后,您可以将代码更改为:

var ev = new Event();
var rect = ev.TheThumb.Template.FindName("rect", ev.TheThumb) as Rectangle;
更好的是,您可以将
rect
控件作为属性公开:

public Rectangle Rect
{
    get { return MoveThumb.Template.FindName("rect", MoveThumb) as Rectangle; }
}
像这样使用它

var ev = new Event();
var rect = ev.Rect;

您定义的模板应用于
Thumb
控件,而不是
事件
控件-这就是
事件
的模板中没有
rect
控件的原因

由于您是从另一个类创建
事件
控件,因此可以将
MoveThumb
控件作为
事件
的代码隐藏中的属性公开,如下所示:

public Thumb TheThumb
{
    get { return MoveThumb; }
}
然后,您可以将代码更改为:

var ev = new Event();
var rect = ev.TheThumb.Template.FindName("rect", ev.TheThumb) as Rectangle;
更好的是,您可以将
rect
控件作为属性公开:

public Rectangle Rect
{
    get { return MoveThumb.Template.FindName("rect", MoveThumb) as Rectangle; }
}
像这样使用它

var ev = new Event();
var rect = ev.Rect;

嗨,伊万,没有例外消息。“rect”仍然为空,没有例外。您什么时候执行此操作?您确定已应用模板吗?我从名为Scheduler的类创建此事件。当我点击一个按钮时,我创建了这个事件,将它添加到调度器的事件列表中并绘制它。我用于创建事件的代码是上面的两行。将应用该模板,因为我的矩形具有AliceBlue颜色。我想要的是根据事件的性质改变颜色。这就是我想访问矩形的原因。嗨,伊万,没有异常消息。“rect”仍然为空,没有例外。您什么时候执行此操作?您确定已应用模板吗?我从名为Scheduler的类创建此事件。当我点击一个按钮时,我创建了这个事件,将它添加到调度器的事件列表中并绘制它。我用于创建事件的代码是上面的两行。将应用该模板,因为我的矩形具有AliceBlue颜色。我想要的是根据事件的性质改变颜色。这就是为什么我想访问矩形。同样的事情。rect仍然为空。。。我不明白,我复制了你的代码,并使用VS 2010/.Net 4检查了我的代码。矩形实例不为空!!!!有一件事我忘了提:我从另一个类创建事件。见上面的评论。同样的事情。rect仍然为空。。。我不明白,我复制了你的代码,并使用VS 2010/.Net 4检查了我的代码。矩形实例不为空!!!!有一件事我忘了提:我从另一个类创建事件。见上面的评论。谢谢你的回答。也是这么做的。。。但仍然无效!两种解决方案都为我的rect变量指定了null。不知道发生了什么事。我创建了一个测试项目,它可以工作。。。我不明白,我只是注意到一件事:它第二次起作用!如果我启动一个调试会话,然后我观察rect的值,当我第一次在断点上停止时它是null。但是,在同一个调试会话中,当我第二次在断点上停止时,rect不为null!WTF?谢谢你的回答。也是这么做的。。。但仍然无效!两种解决方案都为我的rect变量指定了null。不知道发生了什么事。我创建了一个测试项目,它可以工作。。。我不明白,我只是注意到一件事:它第二次起作用!如果我启动一个调试会话,然后我观察rect的值,当我第一次在断点上停止时它是null。但是,在同一个调试会话中,当我第二次在断点上停止时,rect不为null!世界跆拳道联盟?