こんにちは!
プログラムをEtoフレームワークに移植していますが、インターフェイスの移植とデバッグ中に次の質問があります。
ボタン(ボタン)で画像のスケーリングを無効にする方法はありますか?また、デフォルトで有効になっているのはなぜですか?
ボタンがEnabled = falseに設定されていると、ボタンが薄くなり、アイコンが明るいままになるのはなぜですか? これはどのように修正できますか(WPFモード)?
WinFormsモードで、ツールバーのボタンが画像のサイズに合わせて拡大縮小されないのはなぜですか?実際の画像サイズが出力されないのですか? このため、画像は実際のサイズよりも小さく、ぼやけています。
ステータスバーがまったくないのはなぜですか。本当に必要な場合は、ステータスバーを置き換えるためのオプションは何ですか(パネル+ラベル?)。
プロパティDrawableコンポーネントとScrollableコンポーネントを統合するCustomControlをどの程度正しく実装しますか? それらをハイブリッドにしようとしましたが、うまくいきませんでした。 DrawableはScrollableにネストされますか? または、より良い解決策はありますか?
GridView列の値の配置を設定する方法はありますか?
現在アクティブなアプリケーションウィンドウを取得するにはどうすればよいですか(権利が等しいSDIドキュメントウィンドウが複数ある場合)?
将来、UIアプリケーションをテストするためにNUnitFormsのようなエンジンを作成する予定はありますか?
WPFモードでは、ClientSizeがダイアログに割り当てられていない場合、すべてが指定されたレイアウトに完全に揃えられ、ダイアログ自体が適切なサイズになります。 ただし、WinFormsモードでは、ダイアログが小さくなり、コンポーネントが正しく整列しません。 WinForms-プラットフォームとしてサポートされていますか?
手伝って頂けますか?
おい、
問題ごとに別々の問題を開く必要があると思います。私はあなたのいくつかの点にしか答えることができません。
Etoは、すべてのプラットフォームで同じように動作することを目的とはしていません( @cwensleyが提起された問題のいくつかで述べたように)。主な目的は、各プラットフォームでネイティブに見えて動作することです。これが問題の主な理由です。 スタイリングを使用してそれらのいくつかを解決することができます
C#
new GridColumn()
{
HeaderText = header,
DataCell = new TextBoxCell()
{
Binding = binding,
TextAlignment = TextAlignment.Center,
VerticalAlignment = VerticalAlignment.Center
},
};
質問するのが恥ずかしいのですが、「ボタン(ボタン)で画像のスケーリングを無効にする方法はありますか?デフォルトで有効になっているのはなぜですか?」を解決できません。 @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 }, };