Wpf 按钮数据触发

标签 wpf xaml mvvm attachment

我的 wpf 表单中有一个按钮,当我单击该按钮时,该按钮在 mvvm 应用程序中有图像文本,它将附加文件,我的要求是当它成功附加时,我想从按钮中删除图像并想要更新带有一些文字的按钮。

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

最佳答案

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想要查询更多的信息。

关于Wpf 按钮数据触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30330179/

相关文章:

c# - 当我使用 Caliburn Micro 时如何将 wpf 网格上的按钮绑定(bind)到 MVVM 上的方法

c# - CollectionViewSource.Source 的调度程序更新在同一线程上抛出错误的线程异常

c# - DataGridComboBoxColumn 不显示 ObservableCollection

c# - 可以在包装面板 wpf 中通过虚拟化实现平滑滚动吗?

c# - Visual Studio - Windows 窗体或 WPF?

c# - 框架手势识别器在ios模拟器Xamarin中不起作用

c# - WPF:ItemsControl 中的行和列

c# - 打开Outlook后无法创建带有Outlook Interop的电子邮件

c# - 如果值为负,WPF DataGridColumn 前景色变为红色

wpf - WPF 应用程序中的集成帮助系统有什么好的解决方案吗?