WPF рдХреЗ рд╕рд╛рдд рд╕рд╛рд▓: рдХреНрдпрд╛ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ?

рд▓рдЧрднрдЧред рдЯреНрд░рд╛рдВрд╕ред: рдЫрд╣ рд╕рд╛рд▓ рдХреЗ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдХрд╛ рдЕрдиреБрд╡рд╛рдж рд╣реИ ; рдХреНрдпрд╛ рдмрджрд▓рд╛ рд╣реИ? 3 рдЕрдЧрд╕реНрдд 2012 рдХреЛ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ред рдЕрдм WPF рдЫрд╣ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рд╕рд╛рдд рд╕рд╛рд▓ рдкреБрд░рд╛рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓рд╛ рд╣реИред

рдСрдХреНрдЯреЛрдкрд╕ рдбрд┐рдкреНрд▓реЙрдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ WPF рдореЗрдВ рдПрдХ рдирд┐рд╡реЗрд╢ рдмреИрдВрдХ рдореЗрдВ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЬреЛрдЦрд┐рдо рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рдгрд╛рд▓реА рд▓рд┐рдЦрдиреЗ рдореЗрдВ рдПрдХ рд╕рд╛рд▓ рдмрд┐рддрд╛рдпрд╛ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рд╕рд▓рд╛рд╣рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд┐рдпрд╛, рдЬреНрдпрд╛рджрд╛рддрд░ WPF рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ред рдкрд┐рдЫрд▓реЗ рдЫрд╣ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рдореИрдВрдиреЗ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рдХреЛ рдЬреАрдпрд╛ рд╣реИ рдФрд░ рд╕рд╛рдВрд╕ рд▓реА рд╣реИ, рдФрд░ рдЗрд╕ рдкреЛрд╕реНрдЯ рдореЗрдВ рдореИрдВ WPF рдФрд░ XAML рдХреЗ рдЕрддреАрдд рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рдЫрд╣ рд╕рд╛рд▓ рдкрд╣рд▓реЗ, рдореИрдВрдиреЗ рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкрд░ WPF рдореЗрдВ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рдореИрдВрдиреЗ рдЕрдкрдирд╛ рддреНрд░реБрдЯрд┐ рдкреНрд░рджрд╛рддрд╛ рднреА рд▓рд┐рдЦрд╛ рд╣реИ , рдЬреЛ IDataErrorInfo рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ , рдХреНрдпреЛрдВрдХрд┐ - рдЖрдкрдиреЗ рдпрд╣ рдирд╣реАрдВ рдорд╛рдирд╛ рд╣реИ! - WPF 3.0 рдиреЗ IDataErrorInfo рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдмрд╛рдж рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ рдУрдкрди рд╕реЛрд░реНрд╕ WPF рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдкрд░ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬреИрд╕реЗ рдХрд┐ Bindable LINQ ( рд╢реБрд░реБрдЖрддреА Rx рдХреЗ рдЖрд╡рд┐рд╖реНрдХрд╛рд░ рд╕реЗ рдкрд╣рд▓реЗ рднреА WPF рдХреЗ рд▓рд┐рдП рд░рд┐рдПрдХреНрдЯрд┐рд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ) рдФрд░ рдореИрдЧреЗрд▓рди (WPF a la ASP.NET рдХреЗ рд▓рд┐рдП MVC)ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореИрдВрдиреЗ рдПрдорд╡реАрд╡реАрдПрдо рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдХреЛрдб рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдВрдХ рдХреЛ рд╕рдорд░реНрдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдХреНрд▓рдм рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдпрд╛, рдЬрд┐рд╕реЗ рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдЪреЗрд▓реЗ (рдбрдмреНрд▓реНрдпреВрдкреАрдПрдл рдПрдбрд╣реЗрд░реЗрдВрдЯреНрд╕) рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЬрдм рдореИрдВ WPF рдХреЛ рджреЗрдЦрддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдиреАрдВрд╡ рдХреЗ рд╕рд╛рде рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХреА рджреЗрдЦрддрд╛ рд╣реВрдВ рдЬреЛ рдЦрд░рд╛рдм рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЦрд░рд╛рдм рд╣реЛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рд╕реЗ рднреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд┐рддреНрддреАрдп рдирд┐рд╡реЗрд╢ рдХреА рдХрдореА рд╣реИред рдореБрдЭреЗ рдЦреБрд╢реА рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдЕрддреАрдд рдореЗрдВ рд╣реИред

2006 рдореЗрдВ рд╡рд╛рдкрд╕ рдХреИрд╕реЗ рдЖрдпрд╛, рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ рдЦрд┐рдбрд╝рдХреА рдХрд╛ рд▓реЗрдЖрдЙрдЯ рдРрд╕рд╛ рджрд┐рдЦрддрд╛ рдерд╛ (рдХреЛрдб рдЙрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬрд┐рд╕реЗ рдореИрдВ рддрдм рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛):

	<Window x:Class="PaulStovell.TrialBalance.UserInterface.MainWindow"
	  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	  xmlns:tb="clr-namespace:PaulStovell.TrialBalance.UserInterface"
	  xmlns:tbp="clr-namespace:PaulStovell.TrialBalance.UserInterface.Providers"
	  xmlns:system="clr-namespace:System;assembly=mscorlib"
	  Title="TrialBalance" 
	  WindowState="Maximized"
	  Width="1000"
	  Height="700"
	  Icon="{StaticResource Image_ApplicationIcon}"
	  Background="{StaticResource Brush_DefaultWindowBackground}"
	  x:Name="_this">

! x:Class! XML! , ?

, 2013- , WPF . :

	<Window x:Class="PaulStovell.TrialBalance.UserInterface.MainWindow"
	  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
	  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	  xmlns:tb="clr-namespace:PaulStovell.TrialBalance.UserInterface"
	  xmlns:tbp="clr-namespace:PaulStovell.TrialBalance.UserInterface.Providers"
	  xmlns:system="clr-namespace:System;assembly=mscorlib"
	  Title="TrialBalance" 
	  WindowState="Maximized"
	  Width="1000"
	  Height="700"
	  Icon="{StaticResource Image_ApplicationIcon}"
	  Background="{StaticResource Brush_DefaultWindowBackground}"
	  x:Name="_this">

? . , , .

ASP.NET 2006- ( ):

	<%@ Page Language="C#" MasterPageFile="~/TrialBalance.Master" AutoEventWireup="true" EnableViewState="false" CodeBehind="Builds.aspx.cs" Inherits="PaulStovell.TrialBalance.MainWebsite.Builds" Title="Downloads - TrialBalance" %>
	<asp:Content ID="Content1" ContentPlaceHolderID="MainContentPlaceholder" runat="server">
	  <asp:PlaceHolder runat="server" Visible="false" ID="_downloadAreaPlaceholder">
	    <h1>Download</h1>

?

	@model BuildsViewModel	
	@section Main {
	  <h1>Download</h1>
	}

WPF, ASP.NET Web Forms View State. , ASP.NET , . Web Forms MVC, ASPX Razor тАФ ASP.NET .

, ASP.NET WPF:
  1. , (Razor). Razor, . XAML . , , ReSharper' ┬л ┬╗, .
  2. -. , WPF MVVM тАФ , WPF , WPF , - MVVM. Blend Behaviors . ASP.NET MVC.
  3. . ASP.NET MVC, . WPF тАФ .
  4. . ASP.NET MVC , , . , WPF , internal .
  5. -. ASP.NET jQuery JSON.NET, - . WPF, MVVM , , .
  6. -. ASP.NET MVC , ASP.NET - . WPF тАФ , , , WPF: (. .: VirtualizingStackPanel).

, . CSS? Less SASS. JavaScript? CoffeeScript Dart. ; , WPF 2006- .


ASP.NET WPF , , ASP.NET тАФ , . , , . , .

, , WPF . , , , , (. .: WPF).

, , . , . , CSS ( WPF , , WPF, HTML; , ).

(bindings) (Just Works), , . INotifyPropertyChanged . - (data contexts) тАФ , ContextMenu. ICommand : WPF routed commands, Blend тАФ command; ICommand , .

XAML


тАФ XAML. XAML , , . ! Blend, Visual Studio, XAML. 2013-, , Blend, XAML. Visual Studio 2012 .

XAML . , . HTML, XAML . , . , .

, XAML:
  1. , .
  2. , .
  3. .
  4. C# .
  5. Visibility .
  6. .

ASP.NET (Razor), WPF?

MVVM


, , WinForms, , MVVM тАФ , Silverlight Unleashed MVVM Light.

WPF, , , , , MVVM , - Code Project. WPF ViewModelBase, , - INotifyPropertyChanged. 20 , Button1_Click, тАФ , MVVM, , , - -, , MVVM .

MVVM , , WPF , WPF , , . .


, WPF, , , . ASP.NET (- Web Parts ASP.NET 2.0?)

: ASP.NET . - . , . WPF 2006- .

, . ASP.NET Ruby PHP тАФ , . Windows WPF.

WPF. , XAML тАФ , , . 2006-, , . , . , , WPF , ASP.NET.


, , WPF. , - тАж Qt, , C++ , C# . JSON, JavaScript', тАФ XAML Setter.Value?

WPF ? MVVM ? ViewModelBase? BoolToVisibilityConverter IsNotNullConverter?

, WPF . , . , , Microsoft WPF...

Source: https://habr.com/ru/post/In165273/


All Articles