2017-04-05 6 views
0

TimeSpanのより大きい値でWPF値を設定しようとしています。 intまたはdoubleでこれを行うことができましたが、TimeSpanでコンバータを作成しようとすると多少のエラーが発生します。WPFデータトリガをタイムラインで値より大きい値に設定しようとしています

マイコンバータ:

class BreakRangeToBooleanConverterTime : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     return ((TimeSpan)value) > 00:15:00; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new Exception("To Long On Lunch"); 
    } 
} 

私のXAML:

<DataGrid.Resources> 
    <local:BreakRangeToBooleanConverter x:Key="breakconv"/> 
    <local:BreakRangeToBooleanConverterTime x:Key="breakconvtime"/> 
</DataGrid.Resources> 

<MultiDataTrigger> 
    <MultiDataTrigger.Conditions> 
    <Condition Binding="{Binding time, 
        RelativeSource={RelativeSource Self}, 
        Converter={StaticResource breakconvtime}}" 
       Value="Break"/>         
    </MultiDataTrigger.Conditions> 
    <Setter Property="Foreground" Value="Red"/> 
    <Setter Property="Background" Value="SkyBlue"/> 
</MultiDataTrigger> 
+0

インデント、固定この未知の神話の生き物 –

+0

。文法の悪い人には申し訳ありません。 – mcavanaugh418

+1

_ "エラーが発生しました" _ - より具体的に記述してください。あなたが投稿したコードは有効ではないので、あなたが望むものが明確ではありません。 'TimeSpan'のドキュメンテーションを見れば、コード中に' TimeSpan'値を作る方法を知ることができます。上記のコードでは、 'return((TimeSpan)value)> TimeSpan.FromMinutes(15);のようなものは動作するかもしれませんが、あなたの目標が何であるか、特に何が問題になっているのかははっきりしていません。質問を改善してください。 –

答えて

1

これはあなたのコンバータを書くための良い方法です:

class BreakRangeToBooleanConverterTime : IValueConverter 
{ 
    private static readonly TimeSpan _toCompare = new TimeSpan(00, 15, 00); 

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     if (!(value is TimeSpan)) 
      return DependencyProperty.UnsetValue; 

     return (TimeSpan)value > _toCompare; 
    }  

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
    { 
     throw new Exception("To Long On Lunch"); 
    }  
} 
+0

これはコンバータを設計するよりはるかに良い方法です。私はまだプログラミングに慣れていないので、私はこれらのことを行う方法を拾うつもりです。まだそれに慣れています。ヒントありがとうございます。 – mcavanaugh418