如何将一个样式设置器的前景色绑定到另一个样式设置器上的填充颜色,它应该是相同的对象类型。这是我得到的代码!从不同风格绑定到样式设置器
获得这些错误:
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=MenuItemPath'. BindingExpression:Path=Fill; DataItem=null; target element is 'TextBlock' (Name=''); target property is 'Foreground' (type 'Brush')
<Style x:Key="MenuItemName" TargetType="TextBlock">
<Setter Property="Foreground" Value="{Binding ElementName=MenuItemPath, Path=Fill}" />
<Setter Property="FontWeight" Value="Bold" />
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="HorizontalAlignment" Value="Left" />
</Style>
<ControlTemplate x:Key="MenuItem" TargetType="RadioButton">
<ControlTemplate.Resources>
<Style TargetType="Path" x:Name="MenuItemPath">
<Setter Property="Fill" Value="#FF22252C" />
<Setter Property="Height" Value="25" />
<Setter Property="Width" Value="25" />
<Setter Property="Stretch" Value="Uniform" />
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type RadioButton}}, Path=IsChecked}" Value="True">
<Setter Property="Fill" Value="White" />
</DataTrigger>
</Style.Triggers>
</Style>
</ControlTemplate.Resources>
嗯,这个想法是路径和前景将是相同的颜色,但路径颜色是由触发器更改取决于如果RadioButton IsChecked。 –
@MartynBall在这种情况下,您需要绑定到应用模板的'Path.Fill'属性。当触发器改变'Path.Fill'属性时,样式的'Setter.Value'属性不会改变。我不确定你的代码是什么样子的,但是如果你想用显示控制模板的代码来更新你的问题,那么Style就是我可以尝试提出建议的地方。 – Rachel