我需要一些帮助来解决我从自定义按钮上的样式获得的绑定错误。 这是xaml:
<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错误:2:不能 找到管理FrameworkElement或 Target的FrameworkContentElement 元件。 BindingExpression:路径=的IsEnabled; 的DataItem = NULL;目标元素是 'GrayscaleEffect'(HashCode = 4769001); target属性是'IsEnabled'(类型 '布尔')
图像效果似乎工作正常,但最新处理绑定错误以及如何解决?
答案 0 :(得分:1)
我认为Effect实际上没有DataContext,因为它不从FrameworkContentElement继承,所以它无法通过继承的DataContext找到模板化的父级。我在Camera对象中看到了同样的东西,它也没有得到DataContext。请查看:http://msdn.microsoft.com/en-us/library/system.windows.media.effects.effect.aspx
IsEnabled部分是否适合您?