2017-04-05 25 views
3

我正在使用自定义TitleBar制作WPF应用程序。它也有一个自定义按钮样式。虽然我完美地制作了两个自定义控件,但是创建了一个调整大小按钮,用windows状态问题改变它的标题。自定义控件的XAML代码是...不能在数据触发器中使用标签的自定义属性

<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> 

和后面的代码是...

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

请与本

+0

你能提供完整的xaml吗? – Parag

+0

检查我们的输出窗口,以确保现在有绑定错误..你的DP看起来很好。 –

+0

你的问题到底是什么?请同时张贴MaterialButton的代码,“StyleWhite”和MaterialButton的任何默认样式。 – mm8

回答

0

我已经解决了这个问题有所帮助。 该XAML是......

<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> 
相关问题