2013-01-11 29 views
1

我想使用WPF DataTrigger來檢查大於X的值。我知道這隻適用於IValueConverter。我發現了很多C#的例子,但我需要它在PowerShell中。有人可以幫我翻譯這個PowerShell?如何使用poweshell的IValueConverter?

的C#代碼翻譯:

public class CutoffConverter : IValueConverter { 
    public object ConvertTo(object obj, Type type) { 
     return ((int)obj) > Cutoff; 
    } 

    public object ConvertFrom(object obj, Type type) { 
     throw new NotImplementedException(); 
    } 

    public int Cutoff { get; set; } 
} 

而XAML

<Window.Resources> 
    <myNamespace:CutoffConverter x:Key="AgeConverter"/> 
</Window.Resources> 

<DataTemplate.Triggers> 
    <DataTrigger Binding="{Binding Path=Age, 
          Converter={StaticResource AgeConverter}, 
          ConverterParameter=30}"> 
     <Setter TargetName="Age" Property="Foreground" Value="Red"/> 
    </DataTrigger> 
</DataTemplate.Triggers> 

感謝彼得!

回答

2

肯定的:

$src = @' 
using System; 
using System.Globalization; 
using System.Windows.Data; 

namespace MyNamespace 
{ 
    public class CutoffConverter : IValueConverter 
    { 
     public int Cutoff { get; set; } 

     public object Convert(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      return ((int)value) > Cutoff; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 
'@ 

Add-Type -AssemblyName PresentationFramework  
Add-Type -TypeDefinition $src -ReferencedAssemblies PresentationFramework 

您可以添加幾乎任何C#代碼這種方式。你幾乎需要使用C#,因爲AFAIK你不能在PowerShell腳本中實現接口。它更多地是CLI消費者語言,而不是生產者語言。

+0

我想在純PowerShell中做到這一點,但我害怕在PowerShell中實現接口是不可能的。 感謝Keith的幫助! – user1970403

相關問題