尝试在PowerShell中实现IValueConverter时出错-XAML GUI脚本

问题描述 投票:1回答:1

我想念的是什么?我试图将转换器实现为基于XAML的PowerShell脚本,但是没有运气。我已经从StackOverflow之类的网站上获取了一些信息。但在基于Powershell XAML的GUI脚本中找不到转换器的成功实现。

在我正在测试转换器的代码中,它可以正常工作(您可以看到2个转换示例),这意味着Powershell本身接受了新的转换器类型,购买此转换器无法在我的xaml代码中实现。

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

    namespace MyProject
    {

        public class DemoConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if (value == null)
                {
                    return "kuku";
                }
                else
                {            
                    return "bobo";
                }
            }
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {   
                return value;
            }
        }
    }
'@

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

#Checking that the new type works and convert is done...
$c = new-object MyProject.DemoConverter
$c.Convert("gg", $null, $null, $null)
$c.Convert(55, $null, $null, $null)

#Now declaring and loading the xaml
[xml]$XAML = @'

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:cnv="clr-namespace:MyProject" >
    <Window.Resources>
        <cnv:DemoConverter x:Key="TestConverter" />
    </Window.Resources>
    <Grid>     
        <TextBox x:Name="txtTestValue" Text="I'm here to show that xaml loading works!" />
    </Grid>
</Window>
'@

$reader=(New-Object System.Xml.XmlNodeReader $xaml) 

$Window=[Windows.Markup.XamlReader]::Load( $reader )

$Window.ShowDialog() | out-null

我一直收到此错误:

使用“ 1”自变量调用“ Load”的异常:“无法创建未知类型'{clr-namespace:MyProject} DemoConverter'。”

如果我删除该行:<cnv:DemoConverter x:Key="TestConverter" />它不会给出上述错误,并且会显示该窗口(但是,当然,xaml中的转换将不可用),所以我想我在XAML不喜欢的名称空间和/或程序集减速方面做错了。 >

请注意,在我的xaml上,我尚未使用转换器。我只想在尝试使用转换器之前克服上述错误。

非常感谢!

我想念的是什么?我试图将转换器实现为基于XAML的PowerShell脚本,但是没有运气。我已经从StackOverflow之类的网站上获取了一些信息。但找不到一个...

wpf powershell xaml ivalueconverter
1个回答
0
投票

我注册了Stackoverflow只是为了参加这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.