Professional Documents
Culture Documents
Helloviewmodel: Namespace Class Public String Get Return Public String Get Set Public String Get Set
Helloviewmodel: Namespace Class Public String Get Return Public String Get Set Public String Get Set
Xamarin
XAML(WPF)
MVVM Concept :-
1)Commanding
2)DataBinding
(Either we can have events or command events are tightly coupled to view code so we use commanding
pattern)
4)Messaging
<TargetControl
Comment :- ctrl kc
1)
namespace Start1
{
class HelloViewModel
{
public string HelloText { get { return "This is your First Xamerin App"; } }
2)MainPage.xaml
<!--<ContentPage.BindingContext>
<local:HelloViewModel HelloAgain="Hi Charu" />
</ContentPage.BindingContext>--> on xaml
<StackLayout Margin="30">
<Label Text="{Binding HelloText}"/>
<Label Text ="{Binding HelloAgain}"/>
<Entry Text="{Binding City}" Keyboard="Text" x:Name="textCity">
</Entry>
</StackLayout>
<!--<ContentPage.BindingContext>
<local:HelloViewModel HelloAgain="Hi Charu" />
</ContentPage.BindingContext>--> on xaml
Or
Overing MainPage.xaml
COMMANDING
<Button Text="Enter" Clicked="Button_Clicked"></Button>
<Label Text="{Binding Weather}"></Label>
private void Button_Clicked(object sender, EventArgs e)
{
(this.BindingContext as HelloViewModel).GetNextNumber();
}
//
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Start1
{
2) Go to HelloViewModel
class HelloViewModel : ViewModeBase
3)
Threading
public async Task GetWeatherCommandExecute() // Similar to java threads
{
try
{
// IsWeatherCommandNotInProgress = false;
await Task.Delay(500); // different thread
Weather = $"Weather for {City} is 45.90 degree"; // agin in main threads
RaisePropertyChanged(nameof(Weather));
}
finally
{
// IsWeatherCommandNotInProgress = true;
}
//change to
public async Task GetNextNumber()
{
CurrentNumber = rand.Next(0, 101);
await GetWeatherCommandExecute();
}
5)
public HelloViewModel()
{
GetWeatherCommand = new Command(async () => await
GetWeatherCommandExecute() );
}
// Func in C sharp
<!--<ContentPage.BindingContext>
<local:HelloViewModel HelloAgain="Hi Charu" />
</ContentPage.BindingContext>-->
<StackLayout Margin="30">
<Label Text="{Binding HelloText}"/>
<Label Text ="{Binding HelloAgain}"/>
<Entry Text="{Binding City}" Keyboard="Text" x:Name="textCity">
</Entry>
<!--<Button Text=" Enter" Clicked="Button_Clicked">
</Button>-->
namespace Start1
{
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
HelloViewModel viewModel = new HelloViewModel();
viewModel.HelloAgain = "Hi Charu changed";
this.BindingContext = viewModel;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using Xamarin.Forms;
namespace Start1
{
class HelloViewModel : ViewModeBase
{
public int CurrentNumber = 0;
public string HelloText { get { return "This is your First Xamerin App"; } }
}
finally
{
// IsWeatherCommandNotInProgress = true;
}
}
// calling Action
public Func<string, string> fun1 = myfunc;
public static string myfunc(string abc)
{
return "";
}
public void Resetting() // Similar to java threads
{
try
{
}
finally
{
// IsWeatherCommandNotInProgress = true;
}
//change to
public async Task GetNextNumber()
{
CurrentNumber = rand.Next(0, 101);
await GetWeatherCommandExecute();
}
}
}
Interface Class Code
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Start1
{