【问题标题】:wpf button command binding after trigger the propery changes触发属性更改后的wpf按钮命令绑定
【发布时间】:2015-05-20 15:07:06
【问题描述】:

我的 wpf 表单中有一个按钮,当我单击该按钮时,该按钮在 mvvm 应用程序中具有图像文本,它将附加文件,我的要求是当它成功附加时,文本更改为 Approve ,我想将文本更改为 Approve 后,为此命令编写另一个命令属性。

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

【问题讨论】:

  • 问题是什么?
  • 另外,为什么 Visibility 设置为相同的值“Visible”。图像也不需要堆栈面板
  • 我猜 op 正试图在文件附加(上传)后更改按钮文本/内容
  • 按钮文本更改成功,但之后我声明 ,但此时按钮没有触发此命令正在触发上一个命令...

标签: c# wpf mvvm


【解决方案1】:

如果您想更改触发器中的属性(在您的情况下为命令),则必须在样式设置器中初始化该属性。要使您的代码正常工作,请从按钮中删除命令属性并将命令属性添加到样式设置器。

<Button ToolTip="Attach Approval" 
        Height="25" 

        Margin="5,10,5,10">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <!-- Default Content value -->
            <Setter Property="Command" Value="{Binding AddAttachmentCommand}"/>
            <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"/>
                    <Setter Property="Command" Value="SOME OTHER COMMAND"/>
                </DataTrigger>
                <DataTrigger Binding="{Binding IsAttachmentAvailable}" Value="False">
                    <Setter Property="Visibility" Value="Visible"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>

【讨论】:

  • @user3089816 如果我回答了你的问题,那么请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 2011-11-10
  • 2017-10-26
  • 2014-05-10
  • 2011-01-23
  • 2015-06-07
  • 1970-01-01
相关资源
最近更新 更多