0

多年来,我一直试图弄清楚这一点,但我很困惑。

我有以下 XAML:

<TextBox x:Name="MyTextBox" Text="{Binding MyName, Mode=TwoWay}" Width="200">
            <WinRtBehaviors:Interaction.Behaviors>
                <Win8nl_Behavior:EventToCommandBehavior Event="TextChanged"  
                                                        Command="TextChangedCommand" 
                                                        CommandParameter="{Binding Text, ElementName=MyTextBox, Mode=OneWay}"/>
            </WinRtBehaviors:Interaction.Behaviors>

        </TextBox>

在我的视图模型中:

        public ICommand TextChangedCommand
    {
        get
        {
            return new RelayCommand<string>((p) =>
            {
                var msg = new MessageDialog(string.Format("Hi there {0}", p));
                msg.ShowAsync();
            });
        }
    }

但是我希望出现在 CommanParameter (p) 中的字符串值始终为空。

我究竟做错了什么?

4

2 回答 2

2

您可以做的最好的事情是将文本值作为 CommandParameter 传递。

于 2014-01-15T18:36:44.870 回答
1

行为不是可视树的一部分,因此它们无权访问 XAML 范围和执行 ElementName 绑定的能力。此博客文章提供了更多详细信息和合适的解决方案。

于 2013-02-12T01:25:40.450 回答