ガントチャート作成日記

スケジュール管理用のガントチャートのツールを作成しているときに独自に作成した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でemlファイルを閲覧する

1.PowerShellでemlファイルを見たい!  メールについてデータ量が多くなってきた関係で.emlファイルとして抽出して、ZIP圧縮しているが、過去のメールを検索する方法がなくて困っていた。ネットのフリーソフトを使うことも考えたが、処理速度を気にしなければPowerShe...