【问题标题】:KeyTrigger passing parametersKeyTrigger 传递参数
【发布时间】:2013-09-03 07:27:55
【问题描述】:

我有一个文本框,想传递在命令中输入的文本。我确实很关注:

XAML:

<TextBox Margin="0" Grid.Row="2" TextWrapping="Wrap" >
            <i:Interaction.Triggers>
                <iex:KeyTrigger Key="Enter">
                    <i:InvokeCommandAction Command="{Binding TextBoxMessageCommand}"  CommandParameter="{Binding Path=Text, RelativeSource={RelativeSource Self}}"/>
                </iex:KeyTrigger>
            </i:Interaction.Triggers>
        </TextBox>

命令代码:

public override void Execute(object parameter)
    {
       string msg = parameter;

没关系。方法 Execute 正确地触发并且很好。但是参数== null。 这里有什么问题?

【问题讨论】:

    标签: silverlight xaml mvvm triggers


    【解决方案1】:

    您应该尝试为您的TextBox 命名,并在命令中通过该名称引用它。 Self 不会在命令中工作。

    <TextBox x:Name="textBox" Margin="0" Grid.Row="2" TextWrapping="Wrap" >
            <i:Interaction.Triggers>
                <iex:KeyTrigger Key="Enter">
                    <i:InvokeCommandAction Command="{Binding TextBoxMessageCommand}"  CommandParameter="{Binding Path=Text, ElementName=textbox}"/>
                </iex:KeyTrigger>
            </i:Interaction.Triggers>
    </TextBox>
    

    【讨论】:

    • 这东西运作良好。可能是另一种方式存在。我的意思是..更优雅..
    • 可能是CommandParameter="{Binding ElementName=textbox}",那么您可以将参数转换为TextBox,并使用或清除Text 属性。
    • 是的 - 太好了。但是我需要在命令触发后向下滚动我的聊天消息列表。我不能传递两个参数!
    猜你喜欢
    • 2011-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-27
    相关资源
    最近更新 更多