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
実際に Unlink であることを確認<Label Content="{Binding ToolSelected}"/>
しました。したがって、問題はテンプレートが正しいDataContext
を使用していないことだと思いますが、これについてはわかりません。だからこそ、あなたに助けを求めます。
コントロールはカスタム ユーザー コントロールにあり、ToolbarViewModel はそのすべてのコンテキストとして設定されます。
<UserControl.DataContext>
<local:ToolboxView/>
</UserControl.DataContext>