Bene, ecco un semplice esempio di come farlo con MVVM.
In primo luogo scrivere una vista modello:
public class SimpleViewModel : INotifyPropertyChanged
{
private int myValue = 0;
public int MyValue
{
get
{
return this.myValue;
}
set
{
this.myValue = value;
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
poi scrivere un convertitore, in modo da poter tradurre la stringa in int e viceversa
[ValueConversion(typeof(int), typeof(string))]
class SimpleConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
int returnedValue;
if (int.TryParse((string)value, out returnedValue))
{
return returnedValue;
}
throw new Exception("The text is not a number");
}
}
quindi scrivere il codice XAML in questo modo:
<Window x:Class="StackoverflowHelpWPF5.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:[YOURNAMESPACEHERE]"
Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
<local:SimpleViewModel></local:SimpleViewModel>
</Window.DataContext>
<Window.Resources>
<local:SimpleConverter x:Key="myConverter"></local:SimpleConverter>
</Window.Resources>
<Grid>
<TextBox Text="{Binding MyValue, Converter={StaticResource myConverter}, UpdateSourceTrigger=PropertyChanged}"></TextBox>
</Grid>
fonte
2015-09-14 13:23:11
Stai cercando di convertire l'input per un numero? –
@crossemup Se si desidera memorizzare il valore da memorizzare in una variabile dopo aver fatto clic sul pulsante. Lo stai facendo correttamente ... Perché pensi che questo non sia corretto? –
No non sto cercando di convertire l'input in un numero. L'input stesso è un numero. Sto cercando di memorizzare quel numero in una variabile – crossemup