ガントチャート作成日記

スケジュール管理用のガントチャートのツールを作成しているときに独自に作成したTreeListViewで選択されている行に「▶」を出力したいと思ったのでいろいろいじってみた。

<修正前>
 <修正後>

思ったより簡単にできた。さすがWPF!!

Xaml抜粋

<TextBlock Text=" ▶" HorizontalAlignment="Left" VerticalAlignment="Center"  Margin="0,0,3,0" Visibility="{Binding IsSelected,Converter={StaticResource visibilityConverter},  RelativeSource={RelativeSource Mode=FindAncestor,AncestorType =TreeViewItem}}"/>

VisibilityConverter .cs
    /// <summary>
    /// ResizeRectangle.xamlで利用している
    /// リサイズ用のThumbコントロールの表示非表示を制御している
    /// </summary>
    public class VisibilityConverter : IValueConverter
    {
        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bool b = (bool)value;
            return b ? Visibility.Visible : Visibility.Collapsed;
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        #endregion
    }

やっていることはTextBlockに「▶」の文字を入れておく。表示非表示の制御をバインディングとValueConverterインターフェイスを実装。

バインディングは、親のTreeViewItemのIsSelectedプロパティを取得し、取得したプロパティの値(bool型)をValueConveterでVisibilityの値(列挙体のVisibility)に変換している。

試しに使っているといろいろ気になることがあるので修正中。果たして完成はいつになるのやら。

0 件のコメント:

コメントを投稿

PowerShellでEdgeを自動化(インストール不要。参考:郵便追跡サービス自動操作)

1.経緯について  RPAのソフトをインストールできないので、これまでVBSでCreateObjectでブラウザの自動操作をすることがたまにあった。 ※いざというときの手札として持っているだけで安心感が段違い  見た目上IEがインストールされていなくても、CreateObject...