1

WPF DataTrigger を使用して、X より大きい値をチェックしたいと考えています。これは IValueConverter でのみ可能であることを知っています。そのための多くのC#の例を見つけましたが、powershellで必要です。誰かがこれをpowershellに翻訳するのを手伝ってくれますか?

翻訳する 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>
4

1 に答える 1

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#コードを追加できます。また、PowerShellスクリプトでインターフェイスを実装できないため、C#を使用する必要があります。これはCLIのコンシューマー言語であり、プロデューサー言語ではありません。

于 2013-01-11T16:45:12.610 に答える