How to create TextBox in wpf that does not accept number using MVVM?
Method 1: Using Model Property
Inside View
<TextBox Width="200" Text="{Binding MainWindowModel.NonNumeric,UpdateSourceTrigger=PropertyChanged}">
Inside Model
private string _nonNumeric;
public string NonNumeric
{
get { return _nonNumeric; }
set
{
int intvalue;
if (!int.TryParse(value[value.Length - 1].ToString(), out intvalue))
SetProperty(ref _nonNumeric, value);
else
value = _nonNumeric;
}
}
Method 2 : Using Command
Inside View
<Window x:Class="PrismDemo.Views.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PrismDemo.Views"
mc:Ignorable="d" xmlns:prism="http://prismlibrary.com/"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity">
<Grid>
<TextBox Width="200">
<i:Interaction.Triggers>
<i:EventTrigger EventName="KeyDown">
<prism:InvokeCommandAction Command="{Binding KeyDownCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</Grid>
</Window>
Inside ViewModel
public MainWindowViewModel()
{
KeyDownCommand = new DelegateCommand<KeyEventArgs>(ExecuteKeyDownMenu);
}
private void ExecuteKeyDownMenu(KeyEventArgs e)
{
if (e.Key >= Key.D0 && e.Key <= Key.D9)
{
e.Handled = true;
}
}
public ICommand KeyDownCommand { get; set; }
Comments
Post a Comment