1

バインドされたパラメーターのいずれかが変更されたときに CanExpressionSave メソッドを呼び出したい

バインディングは、caliburn micro の長い構文を使用して設定されます。

<controls:ImageButton DockPanel.Dock="Right" Image="/Resources/Save.png" AlternativeImage="/Resources/SaveDisabled.png" 
                      Text="Save" Style="{StaticResource ControlButtonStyle}" x:Name="ExpressionSave">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="Click">
            <cal:ActionMessage MethodName="ExpressionSave">
                <cal:Parameter Value="{Binding ElementName=firsttag, Path=Text}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=firstoperation, Path=Content}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=secondtag, Path=Text}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=SecondOperation, Path=Content}"></cal:Parameter>
                <cal:Parameter Value="{Binding ElementName=thirdtag, Path=Text}"></cal:Parameter>
            </cal:ActionMessage>
        </i:EventTrigger>
    </i:Interaction.Triggers>
</controls:ImageButton>

コードビハインド:

        public void ExpressionSave(string firsttag, string firstoperation, string secondtag,
        string secondoperation, string thirdtag){ }

    public bool CanExpressionSave(string firsttag, string firstoperation, string secondtag,
        string secondoperation, string thirdtag){}
4

1 に答える 1

0

問題は、ビンディングのいくつかのケーシングにありました。

値を期待していなかったので、パラメーターから正しいデータを取得していると思いましたが、バインディングが間違っているためにどこで取得した値でしたか。

CanExpressionSave は Caliburn によって暗黙的にバインドされるため、xaml と上記のコードは有効です。これは、バインドされたプロパティを変更すると、CanExpressionSave がトリガーされることを意味します。

これが誰かに役立つことを願っています:)

于 2013-03-15T19:07:48.753 に答える