ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2014年11月7日金曜日

WPF : Datagrid の一番下の行にスクロールする


このエントリーをはてなブックマークに追加
参考先にいくつかあった方法の使い分けについて。
サンプルコードは C# です。

方法1. ScrollIntoView を使う


ScrollIntoView の引数はオブジェクトなので最終行に相当するオブジェクトがわかっていればそれを使います。

myDataGrid.ScrollIntoView(itemInRow);


Items プロパティの Count と GetItem で最終行のオブジェクトを取得することができるので、以下のようなコードにすると常に動くのではないかと思います。

myDataGrid.ScrollIntoView(myDataGrid.Items.GetItemAt(myDataGrid.Items.Count - 1));


また、DataGrid の CanUserAddRows プロパティが true の場合は、DataGrid の最終行に追加用の行が挿入されているため、追加用の行を CollectionView.NewItemPlaceholder で指定することでスクロールできます。

myDataGrid.ScrollIntoView(CollectionView.NewItemPlaceholder);


方法2. Daragrid のスクロールビューを取得して操作する


少々煩雑ですが、常に使えるようです。ScrollIntoView が使えないような状況があれば、こちらの使用を検討します。

if (mainDataGrid.Items.Count > 0)
{
    var border = VisualTreeHelper.GetChild(mainDataGrid, 0) as Decorator;
    if (border != null)
    {
        var scroll = border.Child as ScrollViewer;
        if (scroll != null) scroll.ScrollToEnd();
    }
}

参考 : How to autoscroll on WPF datagrid

2014年5月10日土曜日

コマンドラインから、実行中の Visual Studio 2013 Express のインスタンスにファイルを開く


このエントリーをはてなブックマークに追加
残念ながら無理のようです。
Express Edition には devenv.exe がなく、VWDExpress.exe や WDExpress.exe には既存のインスタンスでファイルを開くための /edit オプションがありませんでした。いろいろ検索したのですが、結局方法は見つからず。

一応、ファイルを開く既定のプログラムを Microsoft Visual Studio Express 2013 for Windows Desktop 等にしておけば、

Start file.cs

と Start コマンドを利用することで同一のインスタンスにファイルを開くことができますので、これが代替案となりそうです。