Forums: 公開討議 (Thread #34933)

AzukiControlのスクロールバーとScrollBar(WPF)の同期について (2014-01-14 19:09 by rokos #71290)

WPFのWindowsFormsHostを使用して、AzukiControlを利用しています。
独自デザインのScrollBar(WPF)を使用してAzukiControlをスクロールするため、AzukiControlのスクロールバーとScrollBar(WPF)を同期したいと考えています。
http://sourceforge.jp/projects/azuki/forums/15322/34379/のスレッドを見ましたが、私の知識不足でトリガーを同期する方法がどうしても分かりませんでした。
なお、AzukiControlのVScrollイベントで、AzukiControl.ScrollPos.YをScrollBar(WPF)のValueに代入しても、AzukiControlのスクロールバーの最大値が取得できない=ScrollBar(WPF)の最大値に、AzukiControlのスクロールバーの最大値を設定できないので、同期することができませんでした。
お手数をおかけしますが、どのようにすればAzukiControlのスクロールバーとScrollBar(WPF)の同期を実現できるのかの回答をよろしくお願いします。

Reply to #71290×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

Re: AzukiControlのスクロールバーとScrollBar(WPF)の同期について (2014-01-25 22:10 by sgry #71377)

rokosさん

山本(sgry)です。ご無沙汰しております。
反応が遅くなり申し訳ありません。

> AzukiControlのスクロールバーとScrollBar(WPF)を同期したいと考えています。

スクロールバーのY方向位置の計算方法には2通りあります。

一つ目は行数を中心に考え、「一番上に表示されている行番号」÷「ドキュメントに存在する全行数」がスクロールバーのY方向位置であると考える方法です。前者はazukiControl.View.FirstVisibleLineで、後者はazukiControl.Document.LineCountで取得できます。

二つ目はピクセルベースで算出する方法で、「ドキュメントの総行数×行の高さ」がスクロール可能な一番下のY座標であると考えて計算します。(azukiControl.Document.LineCount * azukiControl.View.LineSpacing)でこのY座標は計算できます。

試した限り、どちらの考え方でも同期できました。確認用に試作したものを以下のURLに置いておきますので、もしよろしければこちらをご参照ください(MainWindow.xaml.csのコードで処理しています)。
http://azuki.sourceforge.jp/temp/Forum34933.zip

何か不明点あればまたご質問ください。よろしくお願いします。
Reply to #71290

Reply to #71377×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

Re: AzukiControlのスクロールバーとScrollBar(WPF)の同期について (2014-02-02 12:10 by rokos #71746)

返信ありがとうございます。

無事、サンプルを参考にして、 AzukiControlのスクロールバーとScrollBar(WPF)の同期をすることができました(水平スクロールについては、azukiControl.ViewWidthで最大値を取得して実装しました)。

また、azukiControl.ShowsVScrollBarをfalseにした場合でも、2行以上のテキストを入力してウィンドウのサイズを変更した場合、垂直スクロールバーが表示されてしまうバグを発見しましたので、修正をお願いします。

補足ですが、多くのテキストエディターやブラウザーに搭載されているマウスのホイールを使ったオートスクロールを実装していただけると助かります。
Reply to #71377

Reply to #71746×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login

Re: AzukiControlのスクロールバーとScrollBar(WPF)の同期について (2014-02-08 00:38 by sgry #71820)

rokosさん

山本(sgry)です。

垂直スクロールバーについての不具合報告、ありがとうございます。こちらでも再現しましたので、修正してv1.7.9をリリースしておきました。いつもありがとうございます。

マウスの中クリックでのオートスクロールについては私自身が使わないこともあり、恐縮ですが実現を約束できません…(もしrokosさんの方で開発していただければ、マージさせていただきますが)。


よろしくお願いします。
Reply to #71746

Reply to #71820×

You can not use Wiki syntax
You are not logged in. To discriminate your posts from the rest, you need to pick a nickname. (The uniqueness of nickname is not reserved. It is possible that someone else could use the exactly same nickname. If you want assurance of your identity, you are recommended to login before posting.) Login