Eto: Etoへの移植に関する質問

作成日 2017年06月16日  ·  5コメント  ·  ソース: picoe/Eto

こんにちは!

プログラムをEtoフレームワークに移植していますが、インターフェイスの移植とデバッグ中に次の質問があります。

  1. ボタン(ボタン)で画像のスケーリングを無効にする方法はありますか?また、デフォルトで有効になっているのはなぜですか?

  2. ボタンがEnabled = falseに設定されていると、ボタンが薄くなり、アイコンが明るいままになるのはなぜですか? これはどのように修正できますか(WPFモード)?

  3. WinFormsモードで、ツールバーのボタンが画像のサイズに合わせて拡大縮小されないのはなぜですか?実際の画像サイズが出力されないのですか? このため、画像は実際のサイズよりも小さく、ぼやけています。

  4. ステータスバーがまったくないのはなぜですか。本当に必要な場合は、ステータスバーを置き換えるためのオプションは何ですか(パネル+ラベル?)。

  5. プロパティDrawableコンポーネントとScrollableコンポーネントを統合するCustomControlをどの程度正しく実装しますか? それらをハイブリッドにしようとしましたが、うまくいきませんでした。 DrawableはScrollableにネストされますか? または、より良い解決策はありますか?

  6. GridView列の値の配置を設定する方法はありますか?

  7. 現在アクティブなアプリケーションウィンドウを取得するにはどうすればよいですか(権利が等しいSDIドキュメントウィンドウが複数ある場合)?

  8. 将来、UIアプリケーションをテストするためにNUnitFormsのようなエンジンを作成する予定はありますか?

  9. WPFモードでは、ClientSizeがダイアログに割り当てられていない場合、すべてが指定されたレイアウトに完全に揃えられ、ダイアログ自体が適切なサイズになります。 ただし、WinFormsモードでは、ダイアログが小さくなり、コンポーネントが正しく整列しません。 WinForms-プラットフォームとしてサポートされていますか?

手伝って頂けますか?

最も参考になるコメント

おい、

問題ごとに別々の問題を開く必要があると思います。私はあなたのいくつかの点にしか答えることができません。
Etoは、すべてのプラットフォームで同じように動作することを目的とはしていません( @cwensleyが提起された問題のいくつかで述べたように)。主な目的は、各プラットフォームでネイティブに見えて動作することです。これが問題の主な理由です。 スタイリングを使用してそれらのいくつかを解決することができます

  1. これはスタイリングを使用して解決できます
  2. これはこの問題に関連して
  3. これはデフォルトのWinFormsの動作であるため(winformsを使用したときに覚えている限り)、スタイリングによって解決できます。
  4. すべてのプラットフォームがStatusBarを持っている/サポートしているわけではありません。必要な場合は、あなたが言ったように、アイテムを含むスタックレイアウトを作成します。
  5. DrawableをScrollableレイアウトに配置し、Drawableコントロールを必要なだけ大きくしてみませんか?
  6. TextBoxCellには、TextAlignmentおよびVerticalAlignmentというプロパティがあります。
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. あなたはすでにその答えを持っています

全てのコメント5件

おい、

問題ごとに別々の問題を開く必要があると思います。私はあなたのいくつかの点にしか答えることができません。
Etoは、すべてのプラットフォームで同じように動作することを目的とはしていません( @cwensleyが提起された問題のいくつかで述べたように)。主な目的は、各プラットフォームでネイティブに見えて動作することです。これが問題の主な理由です。 スタイリングを使用してそれらのいくつかを解決することができます

  1. これはスタイリングを使用して解決できます
  2. これはこの問題に関連して
  3. これはデフォルトのWinFormsの動作であるため(winformsを使用したときに覚えている限り)、スタイリングによって解決できます。
  4. すべてのプラットフォームがStatusBarを持っている/サポートしているわけではありません。必要な場合は、あなたが言ったように、アイテムを含むスタックレイアウトを作成します。
  5. DrawableをScrollableレイアウトに配置し、Drawableコントロールを必要なだけ大きくしてみませんか?
  6. TextBoxCellには、TextAlignmentおよびVerticalAlignmentというプロパティがあります。
    C# new GridColumn() { HeaderText = header, DataCell = new TextBoxCell() { Binding = binding, TextAlignment = TextAlignment.Center, VerticalAlignment = VerticalAlignment.Center }, };
  7. あなたはすでにその答えを持っています

質問するのが恥ずかしいのですが、「ボタン(ボタン)で画像のスケーリングを無効にする方法はありますか?デフォルトで有効になっているのはなぜですか?」を解決できません。 @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;
    }
}

WPF用のEtoボタンの作成方法

@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の助けに感謝します

このページは役に立ちましたか?
0 / 5 - 0 評価