- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有以下 XAML 代码,每次按下回车按钮时用户都会在其中提交内容。 EventToCommand
调用 ViewModel 中的 AddFieldCommand
方法。
<TextBox x:Name="txtFields" Text="{Binding FieldsTextProperty, UpdateSourceTrigger=PropertyChanged}" Height="23" TextWrapping="NoWrap" Background="#FFCBEECD" AcceptsReturn="False" >
<i:Interaction.Triggers>
<iex:KeyTrigger Key="Enter">
<cmd:EventToCommand Command="{Binding DataContext.AddFieldCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PassEventArgsToCommand="True"/>
</iex:KeyTrigger>
</i:Interaction.Triggers>
</TextBox>
属性 FieldsTextProperty
在我的 MainViewModel.cs 中定义:
public string FieldsTextProperty { get; set; }
我的 AddFieldCommand
的 ICommand 如下所示:
public ICommand AddFieldCommand { get; private set; }
并像这样初始化:
AddFieldCommand = new RelayCommand<KeyEventArgs>(AddField);
AddField 方法如下所示:
public void AddField(KeyEventArgs e)
{
FrameworkElement classDataVisualElement = (FrameworkElement)e.KeyboardDevice.Target;
ClassData classDataModel = (ClassData)classDataVisualElement.DataContext;
classDataModel.Fields.Add(FieldsTextProperty);
FieldsTextProperty = "";
RaisePropertyChanged("Fields");
}
代码获取当前对象并将 TextBox 中的内容添加到对象中。
这不起作用,我不明白为什么?当我按下 Enter 并且 FieldsTextProperty
和 AddField
从未被调用时没有任何反应
编辑:我的输出窗口中出现以下错误:在“对象”“ClassData”(HashCode=46358046) 上未找到“FieldsTextProperty”属性。绑定(bind)表达式:路径=字段文本属性; DataItem='ClassData' (HashCode=46358046);目标元素是 'TextBox' (Name='txtFields');目标属性是“文本”(类型“字符串”)
编辑 2:经过多次测试 - 问题似乎出在 FieldsTextProperty
中。我的老 friend Console.Writeline("AddField Method") 从不让人失望 ;)
编辑 3:完整(几乎)XAML 代码:
<UserControl ..... >
<Grid>
<TextBlock Text="Class Name" Background="#FF96BB96" Foreground="Black" IsHitTestVisible="True">
<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseDown">
<cmd:EventToCommand Command="{Binding DataContext.MouseDownClassDataCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseMove">
<cmd:EventToCommand Command="{Binding DataContext.MouseMoveClassDataCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
<i:EventTrigger EventName="MouseUp">
<cmd:EventToCommand Command="{Binding DataContext.MouseUpClassDataCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PassEventArgsToCommand="True"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
<StackPanel Opacity="{Binding DataContext.ModeOpacity, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
<Border BorderBrush="#FF53855E" BorderThickness="1" Height="25"/>
<!-- FIELDS ELEMENTS-->
<Grid>
<TextBox x:Name="txtFields" Text="{Binding FieldsTextProperty, UpdateSourceTrigger=PropertyChanged}" Height="23" TextWrapping="NoWrap" Background="#FFCBEECD" AcceptsReturn="False" >
<i:Interaction.Triggers>
<iex:KeyTrigger Key="Enter">
<cmd:EventToCommand Command="{Binding DataContext.AddFieldCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" PassEventArgsToCommand="True"/>
</iex:KeyTrigger>
</i:Interaction.Triggers>
</TextBox>
<TextBlock IsHitTestVisible="False" Text="Insert Fields.." VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5,0,0,0" Foreground="DarkGray">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Visibility" Value="Collapsed"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Text, ElementName=txtFields}" Value="">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</Grid>
<DataGrid x:Name="PropertiesControl1" Height="auto" ItemsSource="{Binding ClassDatas}" HeadersVisibility="None" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Fields}" Header="" Width="*" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
<!-- More of the same code...-->
</StackPanel>
</Grid>
</UserControl>
最佳答案
我有一种预感。当绑定(bind)发生时,命令可能为空。
尝试:
private ICommand _addFieldCommand;
public ICommand AddFieldCommand
{
get
{
if(_addFieldCommand == null)
_addFieldCommand = new RelayCommand<KeyEventArgs>(AddField);
return _addFieldCommand;
}
}
XAML:
<UserControl DataContext"={Binding Path=DataContext, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}">
关于c# - EventToCommand 永远不会被触发 - MVVM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27128996/
我使用 EventToCommand 并希望每次触发事件时更新 CommandParameter 绑定(bind)。有什么方法可以实现吗? 最佳答案 您可以像这样使用 PassEventArgsToC
我在附加事件中使用 Validation.Error的文本框。 Validation.Error 我想绑定(bind)到EventToCommand . 通常它不起作用:
你好 我通过连接到 MVVM 的 EventToCommand 获得了这个 xaml,此代码的问题是,在离开包含它的页面后,它始终保留在内存中。
我正在使用 MVVM-light-Toolkit 中的 EventToCommand 类来处理 WPF-DataGrid 中的 AutoGeneratingColumn-Event。它在我的 Main
我对 Mvvmlight 中的 RelayCommand 和 EventToCommand 有点困惑。似乎 EventToCommand 处理 EventTrigger 并调用 RelayComman
我是 SilverLight 和 Mvvm-Light 的新手。我的 View 上有一个 DataForm,它显示/编辑我的 View 模型的 SelectedPerson 属性(一个 Person
我在 Windows Phone 8 项目中使用 GalaSoft - MVVM Light Toolkit 时遇到了一个相当奇怪的问题。突然(在合并一些东西之后)我所有的 EventToComman
大家好,我正在尝试在列表框的项目中实现点击效果,但我一直收到此错误: 未找到类型“cmd:EventToCommand”。确认您没有缺少程序集引用,并且所有引用的程序集都已构建。 以及我尝试实现点击
我有以下 XAML 代码,每次按下回车按钮时用户都会在其中提交内容。 EventToCommand 调用 ViewModel 中的 AddFieldCommand 方法。
我使用 Mvvm light(wpf45)。 我想在 XAML 中添加 EventToCommand,我使用这个 xmlns:cmd ="http://www.galasoft.ch/mvvmligh
我正在为 WP8 开发一个应用程序,我想与 Windows 商店版本共享一些 ViewModel,所以我创建了一个可移植库,安装了 MvvmLight 的可移植版本并将代码移到那里。 据我所知,如果我
我有一个 StackPanel,里面有一个 Listview。 我希望能够在窗口内滚动,以更改 selectedItem。 澄清; 我想在滚动鼠标滚轮时更改我的 ViewModels Selected
这个有用的类似乎从最新的 MVVM Light 版本中消失了,知道为什么或如何解决它吗? 我正在使用 MvvmLightLibs.5.0.1.0,肯定在 MvvmLightLibs.4.1.27.0
Android 上是否存在类似的 EventToCommand(行为)? 示例 Silverlight/WPF:
我已经阅读了论坛上为 EventToCommand 提供的每个答案,但无法触发我的事件。这是构成我的问题的代码片段。我使用的是 Visual Studio 2015 社区版。 用户控件声明: xmln
我有一个 ViewModel,其中包含一个通过 CommandManager 向其他 View 公开的命令。 现在,如果我双击 TreeView ( https://catelproject.atla
我正在使用 MVVM Light 构建 Windows Phone 8 应用程序。到目前为止,一切都很好。 但是,当我使用 EventToCommand 时,出现多个错误。一个类似的问题在这里 Eve
我在 View 中有一个带有规则的组合框,它运行良好,但我希望 itemsource 中的模型的另一个字段用于绑定(bind)(或当我使用它时)更新另一个字段分数。 例如。如果您在组合框中选择规则 1
如何以编程方式将 EventToCommand 绑定(bind)到 Windows Phone 8 中的 ApplicationBar Button 或 MenuItem?我目前正在使用 MVVM l
大家好,我是 WPF 的新手,我已经开始使用基于 mvvm light 框架的 mvvm 模式实现一个应用程序。我发现它很棒但是我在应该一起交互的控件上使用两个 EventToCommand 时遇到了
我是一名优秀的程序员,十分优秀!