Henehefu 用 ウィキ

メニュー



- Views

最近の更新

取得中です。

WPFメモ > フォルダダイアログを表示するボタン


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

参照の追加

メニューのプロジェクト>参照の追加からSystem.Windows.Formsを参照する。

ダイアログボタンクラス

次のクラスを作成する。
// フォルダダイアログを表示するボタンクラス
namespace My.View
{
    using fm = System.Windows.Forms;
    public class FolderButton : Button
    {
        protected override void OnClick()
        {
            base.OnClick();
 
            using(var dialog = new fm.FolderBrowserDialog()) {
                dialog.SelectedPath = Path;
                var result = dialog.ShowDialog();
                if(result == fm.DialogResult.OK) {
                    Path = dialog.SelectedPath;
                }
            }
        }
 
        public string Path
        {
            get
            {
                return (string)GetValue(PathProperty);
            }
            set
            {
                SetValue(PathProperty, value);
            }
        }
 
        // Using a DependencyProperty as the backing store for Path.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty PathProperty =
            DependencyProperty.Register("Path", typeof(string), typeof(FolderButton),
                new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault));
    }
}

使い方

ボタンのPathプロパティを適当なテキストボックスのTextにバインディングすると便利に使える。
<Window x:Class="Zenrin2Blh.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:v="clr-namespace:My.View"
    >
    <Grid>
    <!-- ...中略... -->
             <!-- 入力フォルダ -->
            <Label>入力フォルダ</Label>
            <TextBox Text="{Binding Path=Input, UpdateSourceTrigger=PropertyChanged}" Name="uiInput"  Grid.Row="0"/>
            <v:FolderButton Grid.Row="0" Path="{Binding ElementName=uiInput, Path=Text}">選択</v:FolderButton>   
    </Grid>
</Window>

タグ一覧