ΠΡΠΈΠ²Π΅Ρ!
Π― ΠΏΠΎΡΡΠΈΡΡΡ ΡΠ²ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊ Eto, ΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠ° ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Ρ ΠΌΠ΅Π½Ρ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠΏΡΠΎΡΡ:
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ (Button) ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?
ΠΠΎΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Enabled = false, ΠΊΠ½ΠΎΠΏΠΊΠ° ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π±Π»Π΅Π΄Π½ΠΎΠΉ, Π° Π·Π½Π°ΡΠΎΠΊ ΠΎΡΡΠ°Π΅ΡΡΡ ΡΡΠΊΠΈΠΌ? ΠΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ (ΡΠ΅ΠΆΠΈΠΌ WPF)?
ΠΠΎΡΠ΅ΠΌΡ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ WinForms ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΏΠ°Π½Π΅Π»ΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΡΡΡΡ ΠΏΠΎΠ΄ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ - Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ? ΠΠ·-Π·Π° ΡΡΠΎΠ³ΠΎ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΡΠ°Π·ΠΌΡΡΡ.
ΠΠΎΡΠ΅ΠΌΡ Π²ΠΎΠΎΠ±ΡΠ΅ Π½Π΅Ρ ΡΡΠ°ΡΡΡ-Π±Π°ΡΠΎΠ² ΠΈ ΠΊΠ°ΠΊ ΠΈΡ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½ΡΠΆΠ½Ρ (ΠΠ°Π½Π΅Π»Ρ + Π―ΡΠ»ΡΠΊΠΈ?).
ΠΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ CustomControl, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΠ²ΠΎΠΉΡΡΠ²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ² Drawable ΠΈ Scrollable? Π― ΠΏΡΡΠ°Π»ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ· Π½ΠΈΡ Π³ΠΈΠ±ΡΠΈΠ΄, Π½ΠΎ ΡΡΠΎ Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ. ΠΡΠ΄Π΅Ρ Π»ΠΈ Drawable Π²Π»ΠΎΠΆΠ΅Π½ Π² Scrollable? ΠΠ»ΠΈ Π΅ΡΡΡ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΡΡΠ΅?
ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π²ΡΡΠ°Π²Π½ΠΈΠ²Π°Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² ΡΡΠΎΠ»Π±ΡΠ°Ρ GridView?
ΠΠ°ΠΊ ΠΌΠ½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ (Π΅ΡΠ»ΠΈ Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π²Π½ΠΎΠΏΡΠ°Π²Π½ΡΡ ΠΎΠΊΠΎΠ½ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² SDI)?
ΠΠ»Π°Π½ΠΈΡΡΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΡΠΎΠ·Π΄Π°ΡΡ Π΄Π²ΠΈΠΆΠΎΠΊ, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠΉ NUnitForms, Π΄Π»Ρ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°?
Π ΡΠ΅ΠΆΠΈΠΌΠ΅ WPF, Π΅ΡΠ»ΠΈ ClientSize Π½Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠΌΡ ΠΎΠΊΠ½Ρ, Π²ΡΠ΅ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ Π²ΡΡΠΎΠ²Π½Π΅Π½ΠΎ Ρ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΌ ΠΌΠ°ΠΊΠ΅ΡΠΎΠΌ, Π° ΡΠ°ΠΌΠΎ Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ΅ ΠΎΠΊΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ Ρ ΠΎΡΠΎΡΠΈΠΉ ΡΠ°Π·ΠΌΠ΅Ρ. ΠΠ΄Π½Π°ΠΊΠΎ Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ WinForms Π΄ΠΈΠ°Π»ΠΎΠ³ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΠΌ, ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ Π½Π΅ Π²ΡΡΡΡΠ°ΠΈΠ²Π°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. WinForms - ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°?
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ½Π΅ ΠΏΠΎΠΌΠΎΡΡ?
ΠΡΠΈΠ²Π΅Ρ,
Π― Π΄ΡΠΌΠ°Ρ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π°ΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΌΠΎΠ³Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΡ
Π²ΠΎΠΏΡΠΎΡΠΎΠ².
Eto Π½Π΅ ΡΡΡΠ΅ΠΌΠΈΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π° Π²ΡΠ΅Ρ
ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ
(ΠΊΠ°ΠΊ @cwensley ΡΠΊΠ°Π·Π°Π» Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ
ΠΈΠ· ΠΏΠΎΠ΄Π½ΡΡΡΡ
Π²ΠΎΠΏΡΠΎΡΠΎΠ²), Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ - Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π²Π°ΡΠΈΡ
ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈ
C#
new GridColumn()
{
HeaderText = header,
DataCell = new TextBoxCell()
{
Binding = binding,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
},
};
ΠΠ½Π΅ Π½Π΅Π»ΠΎΠ²ΠΊΠΎ ΡΠΏΡΠ°ΡΠΈΠ²Π°ΡΡ, Π½ΠΎ Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΠ΅ΡΠΈΡΡ: Β«ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ·ΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Π² ΠΊΠ½ΠΎΠΏΠΊΠ°Ρ
(Button) ΠΈ ΠΏΠΎΡΠ΅ΠΌΡ ΠΎΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ?Β» ΡΠΎ ΡΡΠΈΠ»ΡΠΌΠΈ, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ @SlowLogicBoy.
ΠΠ°ΠΊΡΠΈΠΌΡΠΌ, Π½Π° ΡΡΠΎ ΠΌΠ½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΠΏΡΠΎΠ΅Ρ
Π°ΡΡ, ΡΡΠΎ:
Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => ?????? ));
ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π²Ρ ΡΡΠΎ Π΄Π΅Π»Π°Π΅ΡΠ΅?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ
Π― Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌ Ρ wpf, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΠΎΠ³Ρ Π²Π°ΠΌ Π΄Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
using swc = System.Windows.Controls;
Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler => {
var grid = handler.Control.Content as swc.Grid;
if(grid == null) return; //Something in ButtonHandler changed
var imageCtrl = grid.GetChildOfType<swc.Image>().SingleOrDefault();
if(imageCtrl == null) return; //Something in ButtonHandler changed
//TODO: Stuff with imageCtrl
});
static IEnumerable<T> GetChildOfType<T>(this swc.Grid self)
{
foreach (var item in self.Children)
{
if(item is T ctrl)
yield return ctrl;
}
}
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @SlowLogicBoy , Π²Π°Ρ ΠΊΠΎΠ΄ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΎΡΠΎΡΠ΅ΠΉ ΠΎΡΠΏΡΠ°Π²Π½ΠΎΠΉ ΡΠΎΡΠΊΠΎΠΉ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Wpf, Ρ ΠΏΠΎΡΡΠ°ΡΠ°ΡΡΡ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠΈΡΡ ΠΈ ΡΠ·Π½Π°ΡΡ, ΠΊΠ°ΠΊ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ :)
ΠΠ»Ρ Π·Π°ΠΏΠΈΡΠ΅ΠΉ ΡΡΡ ΡΠ°Π±ΠΎΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ:
Style.Add<Eto.Wpf.Forms.Controls.ButtonHandler>(null, handler =>
{
var grid = handler.Control.Content as swc.Grid;
if (grid == null)
return;
var image = grid.Children.OfType<swc.Image>().FirstOrDefault();
if (image == null)
return;
image.Stretch = System.Windows.Media.Stretch.None;
});
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ @SlowLogicBoy Π·Π° Π΅Π³ΠΎ ΠΏΠΎΠΌΠΎΡΡ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠΈΠ²Π΅Ρ,
Π― Π΄ΡΠΌΠ°Ρ, Π²Π°ΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΎΡΠΊΡΡΠ²Π°ΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ Π²ΠΎΠΏΡΠΎΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Ρ ΠΌΠΎΠ³Ρ ΠΎΡΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ².
Eto Π½Π΅ ΡΡΡΠ΅ΠΌΠΈΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎ Π½Π° Π²ΡΠ΅Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°Ρ (ΠΊΠ°ΠΊ @cwensley ΡΠΊΠ°Π·Π°Π» Π² Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΠ· ΠΏΠΎΠ΄Π½ΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ²), Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ - Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π°ΡΠΈΠ²Π½ΠΎ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅, ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π²Π°ΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΡΠ΅ΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈ
C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };