thinking in wpf
DESCRIPTION
thinking in wpf. ivan towlson mindscape. model is everything. string UserName. DateTime LastActive. bool IsModerator. model. view interface. view. string UserName. presenter. DateTime LastActive. bool IsModerator. model. don’t repeat yourself. view. string UserName. - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/1.jpg)
thinking in wpf
ivan towlsonmindscape
![Page 2: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/2.jpg)
![Page 3: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/3.jpg)
![Page 4: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/4.jpg)
![Page 5: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/5.jpg)
model is everything
![Page 6: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/6.jpg)
DateTime LastActive
string UserName
bool IsModerator
model
![Page 7: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/7.jpg)
DateTime LastActive
string UserName
bool IsModerator
model
presenter
viewview interface
![Page 8: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/8.jpg)
don’t repeat yourself
![Page 9: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/9.jpg)
DateTime LastActive
string UserName
bool IsModerator
model
view
![Page 10: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/10.jpg)
if i can’t data bind to it,it’s not my framework
with apologies to emma goldman
![Page 11: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/11.jpg)
what is the work oflist boxes
in this framework?
with apologies to joel spolsky
![Page 12: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/12.jpg)
what is the work ofcheck boxes
in this framework?
with apologies to joel spolsky
![Page 13: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/13.jpg)
what is the work ofbuttons
in this framework?
with apologies to joel spolsky
![Page 14: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/14.jpg)
what is the work ofcontrols
in this framework?
with apologies to joel spolsky
![Page 15: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/15.jpg)
Behaviour
![Page 16: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/16.jpg)
Behaviour
Content
![Page 17: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/17.jpg)
Behaviour
Layout
Content
![Page 18: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/18.jpg)
Stacked
Positioned
Tabular
None Selectablelist
![Page 19: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/19.jpg)
Selectablelist
Text
Images
Composite with trigger
![Page 20: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/20.jpg)
Selectablelist
Positioned
Images
![Page 21: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/21.jpg)
today we would prefer not to havenaming of parts
![Page 22: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/22.jpg)
about that of whichone cannot speak,one must be silent
with apologies to ludwig wittgenstein
![Page 23: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/23.jpg)
how will clicky-ba know them?
with apologies to steve bell and the wolf of kabul
![Page 24: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/24.jpg)
you can’t use an event there
![Page 25: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/25.jpg)
you do not need a new control
except for a property grid, a tree list view and 11 others– you need those
![Page 26: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/26.jpg)
timer is not missing
![Page 27: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/27.jpg)
you can still sort list boxes
![Page 28: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/28.jpg)
this is your brain on xaml
![Page 29: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/29.jpg)
with apologies to talking heads
![Page 30: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/30.jpg)
what is the value of adependency property?
![Page 31: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/31.jpg)
it depends...
![Page 32: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/32.jpg)
onthe default value
![Page 33: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/33.jpg)
onthe value inherited from a parent
![Page 34: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/34.jpg)
onthe value specified in a style
![Page 35: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/35.jpg)
onthe value specified in a trigger
![Page 36: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/36.jpg)
onthe value you put in there
![Page 37: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/37.jpg)
onthe value of a data binding
![Page 38: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/38.jpg)
onwhether the property is animated
![Page 39: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/39.jpg)
onwhether the property is coerced
![Page 40: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/40.jpg)
it depends
![Page 41: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/41.jpg)
why is this text green?
and is this text green for the same reason?
![Page 42: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/42.jpg)
why is this text green?
and is this text green for the same reason?
<TextBlock Foreground="{StaticResource QueryText}">
</TextBlock>
<TextBlock Foreground="{Binding IsInCredit, Converter=...}">
</TextBlock>
![Page 43: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/43.jpg)
how did i get here?
![Page 44: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/44.jpg)
<DockPanel>
</DockPanel>
<TextBlock DockPanel.Dock="Bottom">how did i get here?
![Page 45: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/45.jpg)
where did this content come from?
![Page 46: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/46.jpg)
where did this content come from?
QuoteAlbumTitle
<local:MisquotationConverter />
![Page 47: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/47.jpg)
cupboards, not storyboards
![Page 48: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/48.jpg)
building blocks
![Page 49: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/49.jpg)
extensibility is like elvis:everywhere
![Page 50: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/50.jpg)
accessing a property from codeis an admission of defeat
![Page 51: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/51.jpg)
accessing a control from codeis an admission of defeat
![Page 52: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/52.jpg)
string UserName
model
viewtextBox1.Text = member.UserName;
member.UserName = textBox1.Text;
textBox1.TextChanged += UpdateUserName;
![Page 53: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/53.jpg)
string UserName
model
viewtextBox1.Text = member.UserName;
member.UserName = textBox1.Text;
textBox1.TextChanged += UpdateUserName;
code smellalert!
![Page 54: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/54.jpg)
string UserName
model
view
![Page 55: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/55.jpg)
DateTime LastActive
string UserName
bool IsModerator
model
view
![Page 56: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/56.jpg)
building blocks
![Page 57: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/57.jpg)
ConvertersSelectorsTriggersLookless
controls
StylesTemplatesBindings
Events / comman
ds
![Page 58: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/58.jpg)
the littlest birdssing the prettiest songs
with apologies to the be good tanyas
![Page 59: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/59.jpg)
![Page 60: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/60.jpg)
![Page 61: thinking in wpf](https://reader036.vdocument.in/reader036/viewer/2022062222/568166b4550346895ddab8bf/html5/thumbnails/61.jpg)