gpt4 book ai didi

wpf - ControlTemplates 的数据上下文

转载 作者:行者123 更新时间:2023-12-04 14:23:09 42 4
gpt4 key购买 nike

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>

最佳答案

尝试删除 RelativeSource来自 DataTrigger.Binding那么它应该在当前 DataContext 中工作:

<DataTrigger Binding="{Binding ToolSelected}" Value="Unlink">
<Setter TargetName="backgroundGrid" Property="Background" Value="Red" />
</DataTrigger>

关于wpf - ControlTemplates 的数据上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982392/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com