рдЕрдЧрд░ рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдВ рдЦреБрд▓рддреА рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рдХреЛ рдЗрд╕рдХреА рдЬрд░реВрд░рдд рд╣реИ

рдПрдХ рдмрд╛рд░ рдореБрдЭреЗ рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╕реЗ рд╡рд┐рдВрдбреЛ рдЦреЛрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдореИрдВ wpf рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдРрд╕рд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдХрдо рдЬрд╛рдирдХрд╛рд░реА рдмрд┐рдЦрд░реА рд╣реБрдИ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдЗрд╕ рдЫреЛрдЯреЗ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдФрд░ рд╕рдмрдорд┐рдЯ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред

.Net рдлреНрд░реЗрдорд╡рд░реНрдХ рдкрд░ рдПрдХ рдирд┐рдпрдорд┐рдд рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВред



рдЕрдм рдЖрдкрдХреЛ рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: WindowsBase, PresentationCore, PresentationFrameworkред



рд╡рд┐рдВрдбреЛрдЬ рдХреА рдорд╛рдирдХ рдЦрд┐рдбрд╝рдХрд┐рдпреЛрдВ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА, рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА рдХреЗ рд╡рд░реНрдЧ рдХреЛ рдЬреЛрдбрд╝реЗрдВред

public class MyWindow : Window{} 

[STAThread] рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдореБрдЦреНрдп рд╡рд┐рдзрд┐ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ

рдХреНрдпреЛрдВ
STAThreadAttribute рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ COM рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде Windows рд╕рдВрджреЗрд╢ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд░реНрдд рд╣реИ
рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗред


 [STAThread] public static void Main(string[] args){} 

рдЕрдм рд╣рдорд╛рд░реА рд╡рд┐рдВрдбреЛ рдмрдирд╛рдПрдБ:

  [STAThread] public static void Main(string[] args) { var win = new MyWindow { Width = 350, Height = 350}; var grid = new Grid(); var text = new TextBox {Text = "my text"}; grid.Children.Add(text); win.Content = grid; } 

рдпрджрд┐ рд╣рдо рдЕрдм рд╡рд┐рдВрдбреЛ рдкрд░ рд╢реЛ () рд╡рд┐рдзрд┐ рдХрд╣рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреБрд░рдВрдд рд╣реА рдзреНрд╡рд╕реНрдд рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЪреВрдВрдХрд┐ рд╣рдо рдЗрд╕реЗ рд╣рд░ рд╕рдордп рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ рдЗрд╕ рд╡рд┐рдВрдбреЛ рдХреЛ рдПрдХ рдХрдВрдЯреЗрдирд░ рдореЗрдВ рдзрдХреЗрд▓рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдкреВрд░реЗ рдЬреАрд╡рди рдЪрдХреНрд░ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред

 app.MainWindow = win; app.MainWindow.Show(); app.Run(); 

рд╣рдордиреЗ рдПрдХ рд╡рд┐рдВрдбреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рд╣реИ, рдФрд░ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЛрдб рд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЗрддрдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ: рд░рди () рд╡рд┐рдзрд┐ рдПрдХ рдЕрдВрддрд╣реАрди рд▓реВрдк рд╣реИ, рдФрд░ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдХреЗрд╡рд▓ рдЙрд╕реА рдереНрд░реЗрдб рд╕реЗ рд░реЛрдХрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдЗрд╕реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрддреНрдкрд╛рджрди:

 Task.Run(async () => { await Task.Delay(1000); app.Dispatcher.Invoke((Action) delegate { app.Shutdown(); }); }); ; 

рддрдм рдкреВрд░реА рд╡рд┐рдзрд┐ рджрд┐рдЦрддреА рд╣реИ
рдЗрд╕рд▓рд┐рдПред
 [STAThread] public static void Main(string[] args) { var app = new Application(); var win = new MyWindow { Width = 350, Height = 350}; var grid = new Grid(); var text = new TextBox {Text = "my text"}; grid.Children.Add(text); win.Content = grid; app.MainWindow = win; app.MainWindow.Show(); Task.Run(async () => { await Task.Delay(1000); app.Dispatcher.Invoke((Action) delegate { app.Shutdown(); }); }); app.Run(); } 

рдФрд░ рдпрд╣рд╛рдБ рд╕реНрд░реЛрдд рд╣реИ


рдПрдХ рд╕реБрдЦрдж рд╕рдорд╛рдзрд╛рди рд╣рдорд╛рд░реА рдЦрд┐рдбрд╝рдХреА рдХреЛ рдХреЛрдб рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рдкрд░рд┐рдЪрд┐рдд xaml рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реИред

рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рд░реНрднрд░рддрд╛ System.Xml рдЬреЛрдбрд╝реЗрдВред
рдФрд░ рдПрдХ xaml рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрдирд╛рдПрдВред
 <Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:ConsoleApplication1" mc:Ignorable="d" Title="MyWindow" Height="450" Width="800"> <Grid> <Label Content="Label" /> </Grid> </Window> 


рдЕрдм рдлрд╛рдЗрд▓ рд╕реЗ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВред
 XmlTextReader r = new XmlTextReader("MyWin.xaml"); var win = XamlReader.Load(r) as Window; 


рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЕрдВрддрд┐рдо рдореБрдЦреНрдп рджрд┐рдЦрддрд╛ рд╣реИ
рдЗрд╕рд▓рд┐рдПред
 [STAThread] public static void Main(string[] args) { var app = new Application(); XmlTextReader r = new XmlTextReader("MyWin.xaml"); var win = XamlReader.Load(r) as Window; app.MainWindow = win; app.MainWindow.Show(); Task.Run(async () => { await Task.Delay(1000); app.Dispatcher.Invoke((Action) delegate { app.Shutdown(); }); }); app.Run(); } 



рдкреБрдирд╢реНрдЪ
Tg рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдпреВрд░реА рдореЗрдВ # рдЪреИрдЯ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред

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


All Articles