2013-04-16 4 views
1

Я продолжаю ходить кругами на этом триггере данных, так что не работает ...Как установить Trigger от родительского имущества для установки детского собственности

У меня есть кнопка, которая имеет границу для Dropshadow по умолчанию. Однако я хочу создать свойство dep, которое будет использоваться для переключения. Тем не менее, я никогда не догадываюсь о том, где действует эффект.

<Style x:Key="RoundedButton" TargetType="{x:Type Button}"> 
<Setter Property="Template"> 
<Setter.Value> 
    <ControlTemplate TargetType="ctrls:RoundedButton"> 
    <Grid> 
    <Border> 
    <Border.Style> 
     <Style TargetType="ctrls:RoundedButton"> 
     <Style.Triggers> 
     <Trigger Property="IsDropShadowVisible" Value="True"> 
     <Setter Property="Effect"> 
      <Setter.Value> 
      <DropShadowEffect ShadowDepth="1"/> 
      </Setter.Value> 
     </Setter> 
     </Trigger> 
     </Style.Triggers> 
     </Style> 
    </Border.Style> 

Это базируется на кнопку, но реализована в виде таможенного контроля пользователя ... Это унаследованный код ...

+0

Сообщение полный XAML. Кроме того, что 'DataTrigger' не имеет смысла. Используйте регулярное 'Trigger Property = IsDropShadowVisible .. и т. Д .'. –

+0

@HighCore обновил мой ответ –

+0

Ваш XAML не имеет смысла. У вас есть «Style TargetType =« Button », а затем« ControlTemplate TargetType = »ctrls: RoundedButton». Я предлагаю вам изучить [этот учебник] (http://www.wpftutorial.net) для вводного материала XAML. –

ответ

1

То, что я здесь работает ли это в новом окне WPF , Никакого другого кода, кроме того, что вы видите здесь.

<Window.Resources> 
    <Style TargetType="{x:Type local:ShadowButton}"> 
     <Setter Property="Template"> 
      <Setter.Value> 
       <ControlTemplate TargetType="{x:Type local:ShadowButton}"> 
        <Button Name="Button"></Button> 
        <ControlTemplate.Triggers> 
         <Trigger Property="IsDropShadowVisible" Value="True"> 
          <Setter TargetName="Button" Property="Effect"> 
           <Setter.Value> 
            <DropShadowEffect ShadowDepth="1"/> 
           </Setter.Value> 
          </Setter> 
         </Trigger> 
        </ControlTemplate.Triggers> 
       </ControlTemplate> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</Window.Resources> 

<!-- snip code --> 

<local:ShadowButton Height="10" Width="10" IsDropShadowVisible="true"/> 

Code-за:

public class ShadowButton : Button 
{ 
    public DependencyProperty IsDropShadowVisibleProperty = 
     DependencyProperty.Register("IsDropShadowVisible", typeof(Boolean), typeof(ShadowButton), new PropertyMetadata(false)); 
    public Boolean IsDropShadowVisible 
    { 
     get { return (Boolean)GetValue(IsDropShadowVisibleProperty); } 
     set { SetValue(IsDropShadowVisibleProperty, value); } 
    } 
} 
+0

Если вы учтете этот комментарий, то это устранит мою проблему: просто удалите стиль границы, назовите границу, затем дайте сеттеру это имя цели. –

Смежные вопросы