Hello there. On click of a textblock, I want to lift its contents in my view model and if accurate, navigate to another page. Unfortunately for me, the click event never triggers its bound command. Below is my code
What I have tried:
In the xaml, I have this markup
<UserControl x:Class="SchoolPrism.Login.Views.Login"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:SchoolPrism.Login.Views"
xmlns:prism="http://prismlibrary.com/"
xmlns:constants="clr-namespace:Infrastructure.Constants;assembly=SchoolPrismInfrastructure"
xmlns:login="clr-namespace:SchoolPrism.Login.ViewModel"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<!--
<Grid DataContext="{Binding login:LoginViewModel}">
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="5*"/>
</Grid.RowDefinitions>
<TextBlock DataContext="{Binding}" Text="{Binding FormResults}"></TextBlock>
<TextBlock Text="hi, can you see me?" x:Name="SchoolCode" Grid.RowSpan="2" Margin="0,50,0,0">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseDown">
<!--
<i:InvokeCommandAction Command="{Binding submitForm}" CommandParameter="{Binding Text, ElementName=SchoolCode}" ></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBlock>
</Grid>
</UserControl>
Then, in the view model, I have this
using Prism.Commands;
using Prism.Modularity;
using SchoolPrism.Modules.Login;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SchoolPrism.Login.ViewModel
{
class LoginViewModel
{
ICommand submitForm
{
get { return new DelegateCommand<string>(SubmitForm); }
}
public void SubmitForm(string code)
{
new LoginModule().proceedToNext("AllTopics");
}
}
}
Finally, in the module proper, I have
using Microsoft.Practices.ServiceLocation;
using Microsoft.Practices.Unity;
using Prism.Commands;
using Prism.Modularity;
using Prism.Mvvm;
using Prism.Regions;
using SchoolPrism.Login.Views;
using System;
using System.Windows;
using System.Windows.Input;
namespace SchoolPrism.Modules.Login
{
[Module(ModuleName = "LoginModule")]
class LoginModule : BindableBase, IModule
{
IRegionManager _regionMan;
public void Initialize ()
{
_regionMan = ServiceLocator.Current.GetInstance<iregionmanager>();
}
public void proceedToNext (string target)
{
_regionMan.RequestNavigate("LoginForm", new Uri(target, UriKind.Relative));
}
}
}
Please, what am I doing wrong?