basyura's blog

あしたになったらほんきだす。

xaml - ScrollViewer と ScrollBar を同期

諸事情による調査。非表示にした ScrollViewer の ScrollBar と、外側に配置して表示している ScrollBar のスクロール位置を同期する。

f:id:basyura:20180624165529p:plain:w300

<UserControl x:Class="VirtualScrollSample.MainPage"
    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"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="20" />
        </Grid.ColumnDefinitions>
        <ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Hidden" Name="Container">
            <StackPanel>
                <Grid Background="Orange" Height="100" />
                <Grid Background="Blue" Height="100" />
                <Grid Background="Yellow" Height="100" />
                <Grid Background="Green" Height="100" />
                <Grid Background="AliceBlue" Height="100" />
                <Grid Background="Coral" Height="100" />
                <Grid Background="Beige" Height="100" />
                <Grid Background="Black" Height="100" />
                <Grid Background="BlanchedAlmond" Height="100" />
                <Grid Background="Red" Height="100" />
                <Grid Background="Blue" Height="100" />
                <Grid Background="Yellow" Height="100" />
                <Grid Background="Green" Height="100" />
                <Grid Background="AliceBlue" Height="100" />
                <Grid Background="Coral" Height="100" />
                <Grid Background="Beige" Height="100" />
                <Grid Background="Black" Height="100" />
                <Grid Background="BlanchedAlmond" Height="100" />
            </StackPanel>
        </ScrollViewer>
        <ScrollBar  Grid.Column="1" Grid.Row="1" Name="ContainerScrollBar" Scroll="ContainerScrollBar_Scroll"/>
    </Grid>
</UserControl>
using System.Windows;
using System.Windows.Controls;
using System.Windows.Controls.Primitives;
using System.Windows.Data;

namespace VirtualScrollSample
{
    public partial class MainPage : UserControl
    {
        /// <summary>
        /// 
        /// </summary>
        public MainPage()
        {
            InitializeComponent();

            SetBinding(OffsetProperty, new Binding("VerticalOffset")
            {
                Source = Container,
                Mode = BindingMode.OneWay,
            });
        }
        /// <summary>
        /// ScrollViewer のスクロール位置を ScrollBar に反映する
        /// </summary>
        public static readonly DependencyProperty OffsetProperty = DependencyProperty.Register(
            "Offset", typeof(double), typeof(MainPage), new PropertyMetadata(0d, (d, e) =>
            {
                MainPage page = d as MainPage;
                double offset = (double)e.NewValue / page.Container.ScrollableHeight;
                page.ContainerScrollBar.Value = offset;

            }));
        /// <summary>
        /// ScrollViewer のスクロール位置
        /// </summary>
        private double Offset 
        {
            get { return (double)this.GetValue(OffsetProperty); }
            set { this.SetValue(OffsetProperty, value); }
        }
        /// <summary>
        /// ScrollBar のスクロール位置を ScrollViewer に反映する
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void ContainerScrollBar_Scroll(object sender, ScrollEventArgs e)
        {
            double offset = Container.ScrollableHeight * e.NewValue;
            Container.ScrollToVerticalOffset(offset);
        }
    }
}

某Hub が某大手へ

俺らが育てたのに結局金か。コントリビュートが多いってアピールなんなの。オープンソースみたいなたいそうな事じゃなくても地道にやってきた自分たちの活動・・・いやでも金がないことにはどうしようもないのだけど。なんかどっかいっちゃった・・・ぐぬぬ。

な感じかな。

今の某大手なら悪くはならないだろうという印象もまた複雑で、いっそのことめちゃくちゃにしてくれた方が感情をぶつけやすくていいわという感じかな。

拠り所みたいな感じだったので複雑な心境ではあるけどお金には勝てない。

inkdrop をちら見

inkdrop 良いのだけど、Bear の編集と表示(プレビュー)が一体化している強みがすごい。 Bear が無ければ飛びついてたのは間違いない。 Vim キーバインドはかなり惹かれるのだけど、プレビューでも Vim キーバインドが使えるとかなり良いんだけどなぁ。 js と css の知識があればできそうな気がするけど調べるのが若干面倒感がある。

分割していない場合の横幅が指定できると便利だけどなぁ。画面分割だと狭すぎるし、かといって分割していないと横長になるし。ウインドウサイズを変える (狭める) と分割したい場合に狭くなりすぎてしまう。

あと、ちょっとした違和感があったのは固定幅フォントか。Bear の場合はコードブロック内では固定幅になるのだけど、inkdrop は固定幅にならない。

編集と表示のモードを切り替えるのがしっくりこないのだけど、その割に vim の編集モードと入力モードの違いは思考の切り替えができて良いと思ったりするが・・・markdown から html への切り替えだと思考の切り替えの前に見た目が変わりすぎてスイッチコストが高いと思われる。

Bear が Vim キーバインディングをサポートしてくれると最強なのだけど、どちらにしろ Windows 環境でどうするかが解決しない。選択肢が無くて evernote を使い続ける。

GW オワタ

5/1 は出社したけどそれ以外は休み。何年ぶりだろうか。年末年始、盆、GW ・・・このあたりに本稼働をぶつけるのやめて人並みに休ませた方がいいなこれ。当たり前か。

ブログが書けるってのはある程度余裕が無いとだめだなと再認識。何回か毎日エントリをと思ったのだけどあっという間に中断してしまう。家でアレコレ考えながらもふと時間が空いた時に書き込めるぐらいの余裕。

ゼルダの伝説 ブレス オブ ザ ワイルド  - Switch

ゼルダの伝説 ブレス オブ ザ ワイルド - Switch

ゼルダの伝説 BREATH OF THE WILD をクリアしてなんとなく気になっていたドラゴンクエストビルダーズの体験版で遊んでたら面白くて購入してしまった。夏には 2 が出るらしい。マイクラだと酔ってしまう&すげー疲れるんだけどビルダーズだと大丈夫なようだ。キャラクターが中央にいるのと、中央の + をみるのとの違いなのだろうか。Switch 版のマイクラは魚眼レンズ的な歪みもきになる。ビルダーズは章ごとに建物が引き継がれないらしいしフリービルドモードが有るのだけど、村人の人数制限や広さや高さの制限とかいろいろあるのでマイクラの方がやっぱ・・・と思ってマイクラを再開するのだけど気持ち悪くなって直ぐやめるの繰り返し。でかい画面でやればいいのかなぁ。

TweetVim 2.6 Release !!

どんどんリリースの間隔が伸びてきてる感。自分ではこれと言っていい感じの機能追加や改善はできていないのだけど、ちょいちょい PR を頂けるのでありがたくマージして 2.6 のリリースとする。

TweetVim

  • vim 8 対応 - g:updatetime の使用をやめて timer を使う - basyura
  • fix syntax error - haya14busa
  • Fix changelog - ryunix
  • Fix default value in doc - ryunix
  • Adding support for 280 characters - Mateus Furquim

twibill.vim

  • Import latest sha1.vim from webapi-vim (367a594) - Jagua
  • disable buffering of cURL for Windows - Akinori Hattori
  • disable .curlrc - Akinori Hattori
  • Specify use http1.0 (cURL) - Jagua
  • Fix for Vim 7.4.1608 - thinca

webapi-vim の修正を Jagua さんが twibill.vim にとりこんでくださったのだけど、オリジナルの webapi.vim からいろいろ取ってきてるんだよというのが明記されてなかったので README に明記してみたけどこれでいいのかはよく分かららない・・・。web-api.vim は Public Domain で MIT-LICENSE で付けても大丈夫だと思っているのだけど何か間違ってたら教えてください。

みなさん本当にありがとうございます _(_ _)_

ところで、mikutter のコンシューマキーが凍結されたようなので tweetvim も凍結される日が来るのだろうか。ユーザ数はぜんぜん違うのだけど。その時は各自でキーを用意してもらえばいいけど。最近は twitter のタイムラインを見ても楽しいと言うより色々な記事に心が揺さぶられるだけで精神衛生上良くないうえに時間が無駄に消費されて負のスパイラルに入ってしまって困るのでスマホからはとりあえずクライアントを消してみた。結局 Web で見てたりするんだけど、情報収集のネタ元として雑音が多いなりにも機能してたりするので (いまのところ) 困る。