none
|ZYCWPF| MVVM在给Button添加了Click事件处理了业务逻辑后,前台页面的改变我想通过XAML来处理,但我试的方法都不行:给EventTrigger 再添加一个Action,给DataTrigger添加Action 应该怎么来实现呢?谢谢 RRS feed

  • 问题

  • <Window x:Class="SRQC_MVVM_页面按钮事件.MainWindow"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"  
            Title="MainWindow" Height="350" Width="525">
        <StackPanel>
            <StackPanel x:Name="spnFrame">
                <TextBox x:Name="txtName" Text="{Binding Description}" />
                <TextBox x:Name="txtValue" />
            </StackPanel>
            <Button Content="更新" Tag="{Binding TagButtonResult}">
                <i:Interaction.Triggers>
                    <i:EventTrigger EventName="Click">
                        <i:InvokeCommandAction Command="{Binding OnAdd}" CommandParameter="更新"></i:InvokeCommandAction>
                    </i:EventTrigger><!-- 设计思想是这样的,在这里绑定了点击后,后台处理成功会给Tag赋值为1,然后DataTrigger监控到Tag -->
                </i:Interaction.Triggers>
                <!--<Button.Style>
                    <Style TargetType="Button">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Tag}" Value="1">
                                我想在这里写成功的Action,但写不了
                            </DataTrigger>
                            <DataTrigger Binding="{Binding RelativeSource={x:Static RelativeSource.Self},Path=Tag}" Value="0">
                                我想在这里写不成功的Action,但写不了
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Button.Style>-->
            </Button>
        </StackPanel>
    </Window>


    我主要的设计思想是,按钮点击后,由后台去处理业务,而前台样式的更改就全交给XAML去处理

    上面的思想就为EventTrigger点击后,后台处理后,把处理结果给Button的Tag进行绑定,

    然后交由前台的DataTrigger获取到这个更新,最后由DataTrigger写个Action来对XAML的界面进行处理

    但我上面的方法没有办法实现

    有哪种实现方法吗?

    万分感谢

    2012年10月23日 3:27

答案

  • 我想你的思路不太对,应当是在其他的UI控件上绑定Button的Tag,以修改样式,而非在Button中处理Action。

    Wanpeng wanpeng.ones@gmail.com

    • 已标记为答案 Jerry Zhang 2012年10月23日 9:38
    2012年10月23日 7:21

全部回复

  • 我想你的思路不太对,应当是在其他的UI控件上绑定Button的Tag,以修改样式,而非在Button中处理Action。

    Wanpeng wanpeng.ones@gmail.com

    • 已标记为答案 Jerry Zhang 2012年10月23日 9:38
    2012年10月23日 7:21
  • 我想你的思路不太对,应当是在其他的UI控件上绑定Button的Tag,以修改样式,而非在Button中处理Action。

    Wanpeng wanpeng.ones@gmail.com

    现在不管思路对不对,我要的功能是:

    当我的i:EventTrigger EventName="Click">

    结束后 可以在XAML中批评行一个Action如:

    <EventTrigger.Actions>                       
                            <BeginStoryboard>
                                <Storyboard>
                                    <ObjectAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="spnFrame" Storyboard.TargetProperty="(UIElement.Visibility)">
                                        <DiscreteObjectKeyFrame KeyTime="00:00:00">
                                            <DiscreteObjectKeyFrame.Value>
                                                <Visibility>Collapsed</Visibility>
                                            </DiscreteObjectKeyFrame.Value>
                                        </DiscreteObjectKeyFrame>
                                    </ObjectAnimationUsingKeyFrames>
                                </Storyboard>
                            </BeginStoryboard>
                        </EventTrigger.Actions>
                    </EventTrigger>

    谢谢

    2012年10月23日 8:03