2015-05-19 88 views
4

我在我的WPF形式有一个按钮,该按钮具有MVVM应用程序中的图像文字时,我按一下按钮,将附加的文件,我的要求是,当它成功连接我想删除的图像从按钮,并想用一些文本更新按钮。WPF按钮数据触发

<StackPanel Grid.Row="3" Orientation="Horizontal" HorizontalAlignment="Right"> 
      <Button ToolTip="Attach Approval" 
        Height="25" 
        Command="{Binding AddAttachmentCommand}" 
        Margin="5,10,5,10"> 
       <StackPanel Orientation="Horizontal"> 
        <Image Source="/UILibrary;component/Themes/Default/Images/Attach.PNG"/> 
       </StackPanel> 
       <Button.Style> 
        <Style TargetType="{x:Type Button}"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsAttachmentAvailable}" Value="True"> 
           <Setter Property="Visibility" Value="Visible"/> 
           <Setter Property="Content" Value="Appprove"/> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding IsAttachmentAvailable}" Value="False"> 
           <Setter Property="Visibility" Value="Visible"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </Button.Style> 

      </Button> 
      <StackPanel Orientation="Horizontal" 
         Height="25" 
         Margin="5,10,5,10" 
         Visibility="{Binding IsAttachmentAvailable, Converter={StaticResource BooleanToVisibilityConverter}}">    
       <TextBlock Margin="3"> 
        <Hyperlink Command="{Binding OpenAttachmentCommand}"> 
         <TextBlock Text="{Binding Attachment.FileName}"/> 
        </Hyperlink> 
       </TextBlock> 
       <customControls:CloseButton Width="15" Height="15" Command="{Binding RemoveAttachmentCommand}"> 
        <customControls:CloseButton> 
         Remove attachment 
        </customControls:CloseButton> 
       </customControls:CloseButton> 
      </StackPanel> 
      <Button Height="25" 
        Width="80" 
        Margin="5,10,5,10" 
        Content="Approve" 
        Command="{Binding ApproveTemplateCommand}"/> 
      <Button Height="25" 
        Width="80" 
        Margin="5,10,5,10" 
        Content="Preview" 
       Command="{Binding PreviewTemplateCommand}"/> 
      <Button Content="Save" 
       Command="{Binding SaveTemplateCommand}" 
       Height="25" 
        Width="80"      
        Margin="5,10,5,10"/> 
      <Button Height="25" 
        Width="80" 
        Margin="5,10,10,10" 
        Content="Cancel" 
        Command="{Binding CancelCommand}"/> 
     </StackPanel>  

回答

7

如果Button.Content<Button>标签本身就像你有设置,将优先于任何风格的值。

您需要直接将您的StackPanel出<Button.Content>标签,并把它的风格或其他数据触发器来代替。

<Button ToolTip="Attach Approval" 
     Height="25" 
     Command="{Binding AddAttachmentCommand}" 
     Margin="5,10,5,10"> 
    <Button.Style> 
     <Style TargetType="{x:Type Button}"> 
      <!-- Default Content value --> 
      <Setter Property="Content"> 
       <Setter.Value> 
        <StackPanel Orientation="Horizontal"> 
         <Image Source="/UILibrary;component/Themes/Default/Images/Attach.PNG"/> 
        </StackPanel> 
       </Setter.Value> 
      </Setter> 

      <!-- Triggered values --> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsAttachmentAvailable}" Value="True"> 
        <Setter Property="Visibility" Value="Visible"/> 
        <Setter Property="Content" Value="Appprove"/> 
       </DataTrigger> 
       <DataTrigger Binding="{Binding IsAttachmentAvailable}" Value="False"> 
        <Setter Property="Visibility" Value="Visible"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Button.Style> 

查看MSDN's Dependency Property Precedence List了解更多信息。

+0

谢谢瑞秋... – user3089816

+0

如何添加命令改变了文本后绑定属性格式? – user3089816

+0

@ user3089816可以使用相同的语法几乎任何属性添加到样式或数据触发:'<二传手Proprety =“命令”值=“{结合AddAttachmentCommand}” />' – Rachel