Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ReactiveUI Tablet Solutions
Search
Dennis Daume
May 31, 2016
Programming
38
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ReactiveUI Tablet Solutions
Dennis Daume
May 31, 2016
Other Decks in Programming
See All in Programming
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
UnityでSystem.Net.WebSocketsなWebSocketサーバが動かないのでUnity Monoのコードを覗いてみた / about implementing websocket server with unity mono
drumath2237
1
610
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
200
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
410
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
270
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
R8 の設定見直しでアプリサイズ削減
andpad
0
220
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Rails World 2026, Austin, Texas
marcoroth
0
220
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
ActionController meets Protocol Buffers
sorah
0
520
AmebaブログはKMPから卒業します
kmars0605
0
190
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.6k
Featured
See All Featured
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
New Earth Scene 8
popppiees
4
2.7k
Tell your own story through comics
letsgokoyo
1
1.1k
Abbi's Birthday
coloredviolet
4
10k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.2k
From π to Pie charts
rasagy
1
400
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
58k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Believing is Seeing
oripsolob
1
240
Music & Morning Musume
bryan
48
7.4k
Transcript
Mobile Development with Xamarin C# Meetup Vienna, 2016/05/31
www.tabletsolutions.at Mobile Workforce Automation
Building Reactive Mobile Apps with ReactiveUI
ReactiveUI Akavache Refit Splat MahApps.Metro Open Source © Tablet Solutions
GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI” Dennis Daume @flagbug About me
WPF WinForms WinRT Windows Phone © Tablet Solutions GmbH, Dennis
Daume - “Building Reactive Mobile Apps with ReactiveUI” Xamarin.Android Xamarin.iOS Xamarin.Mac Platforms
Who’s using ReactiveUI? Github Slack Tablet Solutions © Tablet Solutions
GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
ReactiveObject ViewModel Base Implements INotifyPropertyChanged Exposes RaiseAndSetIfChanged Exposes WhenAnyValue ©
Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
RaiseAndSetIfChanged Standard MVVM public string Username { get { return
username; } set { if (username != value) { username = value; } this.OnPropertyChanged(); } } ReactiveUI public string Username { get { return this.username; } set { this.RaiseAndSetIfChanged( ref this.username, value); } } © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
RaiseAndSetIfChanged public string Username { get { return this.username; }
set { this.RaiseAndSetIfChanged(this.username, value); } } public string Password { get { return this.username; } set { this.RaiseAndSetIfChanged(this.username, value); } } © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
this.WhenAnyValue this.WhenAnyValue(x => x.Username, x => x.Password, (username, password) =>
!String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password)) .Subscribe(canLogin => /* Enable/Disable Login Button */ ); © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
this.WhenAnyValue this.WhenAnyValue(x => x.SearchTerm) .Subscribe(searchTerm => DoSearch(searchTerm)); © Tablet Solutions
GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
Combining Values public int Red { get { return this.red;
} set { this.RaiseAndSetIfChanged(ref this.red, value); } } public int Green { get { return this.green; } set { this.RaiseAndSetIfChanged(ref this.green, value); } } public int Blue { get { return this.red; } set { this.RaiseAndSetIfChanged(ref this.blue, value); } } © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
private ObservableAsPropertyHelper<Color> color; public Color Color => this.color.Value; // In
the constructor this.WhenAnyValue(x => x.Red, x => x.Green, x => x.Blue, (r, g, b) => new Color(r, g, b)) .ToProperty(this, x => x.Color, out this.color); ToProperty © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
this.WhenAnyValue(x => x.SearchTerm) .Where(s => !String.IsNullOrEmpty(s)) .Throttle(TimeSpan.FromSeconds(0.5)) .Select(s => DoSearch(s).Retry(3))
.Catch(Observable.Return(Enumerable.Empty<Result>())) .Switch() .ToProperty(this, x => x.ListOfSearchResults); © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
Commanding ICommand • bool CanExecute(object o) • void Execute(object o)
ReactiveCommand • IObservable<bool> CanExecute { get; } • Task<T> ExecuteAsyncTask(object o); © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
ReactiveCommand var canLogin = this.WhenAnyValue(x => x.Username, x => x.Password,
(username, password) => !String.IsNullOrEmpty(username) && !String.IsNullOrEmpty(password)); this.LoginCommand = ReactiveCommand.CreateAsyncTask(canLogin, _ => /* Send login request to server */ ); <Button Content=“Login” Command=“{Binding LoginCommand}” /> © Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
ReactiveCommand Notifies UI of CanExecute change Asynchronous Testable © Tablet
Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
var viewModel = new LoginViewModel(); await viewModel.Login.ExecuteAsyncTask(); // assert something
© Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
What else? Cross-Platform Bindings Reactive Collections Error Handling Routing Activation
© Tablet Solutions GmbH, Dennis Daume - “Building Reactive Mobile Apps with ReactiveUI”
https://github.com/reactiveui/ReactiveUI http://reactiveui.net/ About ReactiveUI © Tablet Solutions GmbH, Dennis Daume
- “Building Reactive Mobile Apps with ReactiveUI”
[email protected]
Interested? © Tablet Solutions GmbH, Dennis Daume - “Building
Reactive Mobile Apps with ReactiveUI”
Building Reactive Mobile Apps with ReactiveUI Dennis Daume @flagbug ?