2017-04-05 6 views
3

Je crée une application WPF avec TitleBar personnalisé. Il a également un style de bouton personnalisé. Bien que j'ai fait les deux contrôles personnalisés parfaitement, mais tout en créant un bouton de redimensionnement qui change sa légende avec le problème d'état Windows. Le code XAML du contrôle personnalisé est ...Impossible d'utiliser la propriété personnalisée d'une étiquette dans les déclencheurs de données

<local:MaterialButton Grid.Column="7" BackStyle="{StaticResource StyleWhite}"> 
    <local:MaterialButton.Triggers> 
    <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Normal"> 
     <Setter Property="Caption" Value="&#xE922;" /> 
    </DataTrigger> 
    <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Maximized"> 
     <Setter Property="Caption" Value="&#xE923;" /> 
    </DataTrigger> 
    </local:MaterialButton.Triggers> 
</local:MaterialButton> 

et le code est derrière ...

 public string Caption 
    { get { return (string)GetValue(CaptionProperty); } 
     set { SetValue(CaptionProperty, value); } 
    } 
    public static readonly DependencyProperty CaptionProperty = 
     DependencyProperty.Register("Caption", typeof(string), typeof(MaterialButton)); 

S'il vous plaît aider avec ce

+0

Pouvez-vous fournir xaml complet? – Parag

+0

vérifiez notre fenêtre de sortie pour vous assurer qu'il y a maintenant des erreurs de liaison .. votre DP semble très bien. –

+0

Quel est exactement votre problème? Veuillez également publier le code du MaterialButton, le "StyleWhite" et n'importe quel style par défaut du MaterialButton. – mm8

Répondre

0

Je l'ai déjà résolu ce problème. Le XAML est ......

<Style TargetType="{x:Type local:TitleBar}"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="{x:Type local:TitleBar}"> 
     <Grid Name="TitleBar" Height="60" HorizontalAlignment="Stretch" 
       Background="{Binding Background, FallbackValue=SteelBlue}"> 
      <Path Fill="#FF2A5478" Style="{Binding TitleBarStyle, FallbackValue='{StaticResource StyleDesign01}'}" 
       HorizontalAlignment="Right" VerticalAlignment="Top" Height="200"/> 
      <Grid Height="30" HorizontalAlignment="Stretch" VerticalAlignment="Top"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="30"/> 
        <ColumnDefinition Width="1*"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
        <ColumnDefinition Width="Auto"/> 
       </Grid.ColumnDefinitions> 
       <Image Grid.Column="0" Name="Icon" Stretch="Uniform" Height="auto" Width="auto" Margin="5" 
       Source="{Binding Path=Icon, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" 
       HorizontalAlignment="Center" VerticalAlignment="Center"/> 
       <TextBlock Grid.Column="1" Name="Title" Foreground="White" Margin="5,0,0,0" FontFamily="Segoe UI" 
          Text="{Binding Path=Title, Mode=OneWay, RelativeSource={RelativeSource TemplatedParent}}" 
          HorizontalAlignment="Left" VerticalAlignment="Center"/> 
       <local:FlatButton Grid.Column="8" x:Name="CloseButton" Caption="&#xE947;" 
           Height="30" Width="45" 
           BackStyle="{StaticResource StyleRed}"/> 
       <local:FlatButton Grid.Column="7" x:Name="ResizeButton" 
           Height="30" Width="45" 
           BackStyle="{StaticResource StyleWhite}"> 
       <local:FlatButton.Style> 
        <Style TargetType="local:FlatButton"> 
        <Style.Triggers> 
         <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Normal"> 
          <Setter Property="Caption" Value="&#xE922;" /> 
         </DataTrigger> 
         <DataTrigger Binding="{Binding WindowState, RelativeSource={RelativeSource AncestorType={x:Type Window}}}" Value="Maximized"> 
          <Setter Property="Caption" Value="&#xE923;" /> 
         </DataTrigger> 
         </Style.Triggers> 
        </Style> 
        </local:FlatButton.Style> 
       </local:FlatButton> 
       <local:FlatButton Grid.Column="6" x:Name="MinimizeBtton" Caption="&#xE921;" 
            Height="30" Width="45" 
            BackStyle="{StaticResource StyleWhite}"/> 
       </Grid> 
      </Grid> 
      </ControlTemplate> 
     </Setter.Value> 
    </Setter> 
</Style>