ControlTemplate如何处理数据文本?
使用以下模板
<ControlTemplate x:Key="ToolbarButtonHover" TargetType="Button">
<Grid Name="backgroundGrid">
<Image Source="{DynamicResource ResourceKey=Img}" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"></Image>
</Grid>
<ControlTemplate.Triggers>
<DataTrigger Binding="{Binding Path=DataContext.ToolSelected, RelativeSource={RelativeSource TemplatedParent}}" Value="Unlink">
<Setter TargetName="backgroundGrid" Property="Background" Value="Red" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>用控制
<Button Content="Button"
Template="{StaticResource ResourceKey=ToolbarButtonHover}"
Height="24" Width="24" Background="Red">
<Button.Resources>
<ImageSource x:Key="Img">Resources/Icons/toolSelect.png</ImageSource>
</Button.Resources>
</Button>但这并不能使背景变红。我已经验证了ToolbarViewModel属性ToolSelected的值实际上是通过在控件旁边有一个<Label Content="{Binding ToolSelected}"/>来解除链接的。所以我认为问题在于模板没有使用正确的DataContext,但我不确定这一点。所以我才找你帮忙。
控件位于自定义用户控件中,ToolbarViewModel设置为所有控件的上下文,如下所示。
<UserControl.DataContext>
<local:ToolboxView/>
</UserControl.DataContext>发布于 2013-09-24 13:22:56
尝试从RelativeSource中删除DataTrigger.Binding,然后它应该在当前DataContext中工作
<DataTrigger Binding="{Binding ToolSelected}" Value="Unlink">
<Setter TargetName="backgroundGrid" Property="Background" Value="Red" />
</DataTrigger>https://stackoverflow.com/questions/18982392
复制相似问题