0

我正在尝试Click为 a 中的按钮捕获事件,ResourceDictionary但出现错误:

'WpfApplication1.MyResourceDictionary' does not contain a definition for 'GetTemplateChild' and no extension method 'GetTemplateChild' accepting a first argument of type 'WpfApplication1.MyResourceDictionary' could be found (are you missing a using directive or an assembly reference?)

MyResourceDictionay.xaml.cs 如下所示:

namespace WindowsApplication1
{
  partial class MyResourceDictionary
  {
    public virtual void OnApplyTemplate()
    {
     Button myButton = this.GetTemplateChild("Crap") as Button;
    }
  }
}

MyResourceDictionay.xaml 如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     x:Class="WindowsApplication1.MyResourceDictionary" 
     x:ClassModifier="public">

  <ControlTemplate x:Key="ExpandablePropertyEditorTemplate">
    <Button x:Name="Crap"  Foreground="White" Background="White">
      <Image Source="Controls\check.png"/>
    </Button>
  </ControlTemplate>
</ResourceDictionary>

有什么帮助吗?

4

1 回答 1

0

如果您尝试在资源字典中进行搜索,您应该使用函数 FindName(string),而不是 GetTemplateChild(string)。

即使您在当前控件的模板中搜索子控件,也应该使用 Template.FindName(string, Fr​​ameworkElement templatedParent) 而不是 GetTemplateChild(string)。

如果这没有帮助,请扩展您的描述。

如果您有代码隐藏文件,通常您可以在 XAML 中添加处理程序并将其附加到隐藏代码(即使控件在字典中,您也可以经常这样做)。

我希望这有帮助。

于 2009-03-09T15:02:40.947 回答