【问题标题】:UWP InvokeCommandAction on TextBox inside ListView MVVMListView MVVM 内 TextBox 上的 UWP InvokeCommandAction
【发布时间】:2016-07-13 07:26:22
【问题描述】:

在视图中包含的用户控件中绑定命令时遇到问题。

UserControl.xaml

<DataTemplate x:Key="SoldItemDataTemplate" x:DataType="data:SoldItem">
    <Grid HorizontalAlignment="Stretch">
        <Grid.ColumnDefinitions>
         ...
        </Grid.ColumnDefinitions>
         ...
            <TextBox Grid.Column="2" Text="{x:Bind q}">
                <Interactivity:Interaction.Behaviors>
                    <Core:EventTriggerBehavior EventName="TextChanged">
                        <Core:InvokeCommandAction Command="{Binding Path=DataContext.QChanged, ElementName=SoldRows}" CommandParameter="{Binding Mode=TwoWay}"/>
                    </Core:EventTriggerBehavior>
                </Interactivity:Interaction.Behaviors>
            </TextBox>
        </Grid>
</DataTemplate>
...
<ListView x:Name="SoldRows"
    ItemsSource="{Binding SoldItemsList , Mode=TwoWay}" 
    IsItemClickEnabled="True" 
    ItemTemplate="{StaticResource SoldItemDataTemplate}">
...

MainPage.xaml

<Page.DataContext>
    <vm:MainPageViewModel x:Name="ViewModel"></vm:MainPageViewModel>
</Page.DataContext>
...
<controls:UserControl Grid.Row="1"></controls:UserControl>
...

MainPageViewModel.cs

...
private DelegateCommand<object> _QSoldChanged;
...
public DelegateCommand<object> QSoldChanged
    {
        get
        {
            if (_QSoldChanged == null)
            {
                _QSoldChanged = new DelegateCommand<object>((object par) =>
                {
                    ...
                });
            }

            return _QSoldChanged;
        }
    }

所以,我想在 TextChanged 事件上调用 QSoldChanged,但没有任何反应。我错过了什么?在这种情况下,这是设置命令的正确方法吗? 如果您需要更多,请询问! 提前致谢

【问题讨论】:

  • 问题在于 x:Bind of textbox 。它的模式是一种方式。因此文本更改不会反映在视图模型上。将其更改为绑定。希望它有效

标签: xaml mvvm data-binding win-universal-app template10


【解决方案1】:

问题在于 x:Bind of textbox 。它的模式是一种方式。因此文本更改不会反映在视图模型上。将其更改为绑定。 这也可能导致问题

{x:Bind} 不使用 DataContext 作为默认源,而是使用页面或用户控件本身。因此,它将在您的页面或用户控件的代码隐藏中查找属性、字段和方法。要将您的视图模型公开给 {x:Bind},您通常需要在页面或用户控件的代码中添加新字段或属性。 参考这个链接x:Bind

希望有效果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2015-03-05
    相关资源
    最近更新 更多