DataTriggerBehavior绑定到ViewModel上的属性

时间:2017-09-11 10:31:21

标签: mvvm uwp-xaml

我试图将DataTriggerBehavior绑定到我的ViewModel上的属性,但它并没有触发。

我已经使用绑定到各种控件属性的DataTriggerBehaviors没有任何问题,但无法使VM绑定工作。

DataContext设置为VM。 我可以在调试中看到绑定值,但没有触发器。 我通过将DataTriggerBehavior更改为EventTriggerBehavior来测试InvokeCommandAction,以便正常工作。

                <AppBarButton Icon="Library">
                    <i:Interaction.Behaviors>
                        <core:DataTriggerBehavior Binding="{Binding HelpPhase}" ComparisonCondition="Equal" Value="Add" >
                            <core:InvokeCommandAction Command="{Binding DataContext.StoreRateCommand, ElementName=LayoutRoot}"/>
                        </core:DataTriggerBehavior>
                    </i:Interaction.Behaviors>
                </AppBarButton>

在VM中(继承实现IPCN的VMBase)

Private mHelpPhase As String
    Public Property HelpPhase() As String
        Get
            Return Settings.HelpPhase
        End Get
        Set(value As String)
            SetProperty(Settings.HelpPhase, value)
        End Set
    End Property

1 个答案:

答案 0 :(得分:0)

EventTriggerBehavior在其源上侦听特定事件,并在触发事件时执行操作。它与DataTriggerBehavior不同。

当行为绑定的数据满足指定条件时,DataTriggerBehavior执行操作。在您的问题中,当HelpPhase值的绑定数据更改为&#34; Add&#34;时,该行为会触发一个触发命令的操作。

您应该能够检查是否已将HelpPhase绑定到DataTriggerBehavior并设置&#34; Add&#34;到HelpPhase。如果TextBlock显示&#34;添加&#34;您可以将HelpPhase Text属性绑定到TextBlock

有一个官方的DataTriggerBehavior样本,请参考XamlBehaviors sample