2011-04-11 104 views
1

我需要一些帮助,我从自定义按钮上的样式获得绑定错误。 这里是XAML:WPF图像效果控件模板中的绑定错误

<Style TargetType="{x:Type Controls:DropDownButton}" BasedOn="{StaticResource ButtonBaseStyle}"> 
      <Setter Property="Template"> 
       <Setter.Value> 
        <ControlTemplate TargetType="{x:Type Controls:DropDownButton}"> 
         <Border 
          x:Name="border" 
          Padding="{TemplateBinding Padding}" 
          HorizontalAlignment="{TemplateBinding HorizontalAlignment}" 
          VerticalAlignment="{TemplateBinding VerticalAlignment}"> 
          <Grid> 
           <Grid.ColumnDefinitions> 
            <ColumnDefinition Width="*"/> 
            <ColumnDefinition Width="Auto"/> 
           </Grid.ColumnDefinitions> 

           <Grid Grid.Column="0" > 
            <Border Padding="5"> 
             <Grid> 
              <Grid.RowDefinitions> 
               <RowDefinition Height="*"/> 
               <RowDefinition Height="*"/> 
              </Grid.RowDefinitions> 

              <Grid Grid.Row="0"> 
               <Image 
                Style="{StaticResource DefaultImageStyle}" 
                Source="{Binding SmallImage, Converter={StaticResource LocalizingConverter}}"> 
                <Image.Effect> 
                 <ShaderEffects:GrayscaleEffect 
                  DesaturationFactor="1" 
                  IsEnabled="{Binding IsEnabled, RelativeSource={RelativeSource TemplatedParent}}"/> 
                </Image.Effect> 
               </Image> 
              </Grid> 
              <Grid Grid.Row="1"> 
               <TextBlock 
                Style="{StaticResource DefaultTextHeaderStyle}" 
                Text="{Binding Name, Converter={StaticResource LocalizingConverter}}"/> 
              </Grid> 
             </Grid> 
            </Border> 
           </Grid> 
           <Grid 
            Grid.Column="1" 
            VerticalAlignment="Stretch"> 
            <Polygon                  
             x:Name="arrow" 
             Points="0,0 8,0 4,5"                                    
             Fill="{TemplateBinding Foreground}" 
             VerticalAlignment="Center" 
             HorizontalAlignment="Center"/> 
           </Grid> 
          </Grid> 
         </Border> 
        </ControlTemplate> 
       </Setter.Value> 
      </Setter> 
     </Style> 

,当应用程序启动时给了我下面的绑定错误:

System.Windows.Data Error: 2 : Cannot find governing FrameworkElement or FrameworkContentElement for target element. BindingExpression:Path=IsEnabled; DataItem=null; target element is 'GrayscaleEffect' (HashCode=4769001); target property is 'IsEnabled' (type 'Boolean')

的图像效果似乎工作正常,但最新的成交与绑定错误我该如何解决它?

回答

1

我不认为该效果实际上有一个DataContext,因为它不从FrameworkContentElement继承,所以它无法通过继承的DataContext找到模板化的父级。我用Camera对象看过同样的事情,它也没有得到DataContext。查看:http://msdn.microsoft.com/en-us/library/system.windows.media.effects.effect.aspx

IsEnabled部件是否能正常工作?

+0

是的,当按钮被禁用时,效果肯定会被应用。 – Sigh 2011-04-11 03:52:47