Я пытаюсь выработать ControlTemplate.Triggers в стиле ниже, и я не понял, как найти названные свойства Ellipse и Path.BInding из шаблона в стиле
Например, если IsMouseOver, измените фон эллипса. Что такое хороший способ найти Ellipse, чтобы я мог установить свойство Fill так, как я настроил этот стиль? Есть ли лучший способ выложить его?
Cheers,
Berryl
<Style x:Key="CloseCrossToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<Grid Background="Transparent">
<!-- The background of the button, as an ellipse. -->
<Ellipse x:Name="theEllipse" />
<!-- A path that renders a cross. -->
<Path x:Name="theCross"...
</Grid>
</DataTemplate>
</Setter.Value>
</Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<ContentPresenter x:Name="theContent"/>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Ellipse.Fill" Value="{StaticResource HoverBackgroundBrush}" />
<Setter Property="Path.Stroke" Value="{StaticResource HoverForegroundBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
нормально, работая
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Grid Background="Transparent">
<!-- The background of the button, as an ellipse. -->
<Ellipse x:Name="theEllipse" />
<!-- A path that renders a cross. -->
<Path x:Name="theCross"
...
</Path>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="theEllipse" Property="Fill" Value="{StaticResource HoverBackgroundBrush}" />
<Setter TargetName="theCross" Property="Stroke" Value="{StaticResource HoverForegroundBrush}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="theEllipse" Property="Fill" Value="{StaticResource PressedBackgroundBrush}" />
<Setter TargetName="theEllipse" Property="Stroke" Value="{StaticResource PressedBorderBrush}" />
<Setter TargetName="theCross" Property="Stroke" Value="{StaticResource PressedForegroundBrush}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
был кусок я не получал - положить, что был моим DataTemplate в ControlTemplate вместо ContentPresenter. Неудивительно, что это требует некоторой практики! Ну хорошо, Strawberry Fields Forever ... (см. Исправленный код тоже). ура – Berryl