【问题标题】:How to reference a sub class for IValueConverter?如何引用 IValueConverter 的子类?
【发布时间】:2014-01-28 13:46:13
【问题描述】:

我已阅读此 SOF 帖子:How to properly reference a class from XAML 但我无法完成这项工作。 因为我的转换器类是子类,所以我无法在 XAML 上获得参考。

转换器类:

using System;
using System.Windows;
using System.Windows.Data;


namespace GapView.Classes
{
    public class ConverterClass
    {
        public class PhotoBorderConverter : IValueConverter
        {

            public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int width = System.Convert.ToInt32(value);
                return width + 16;
            }

            public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
            {
                int width = System.Convert.ToInt32(value);
                return width - 16;
            }
        }
    }

}

我添加了 MainWindow.xaml,XML 部分

xmlns:GapView="clr-namespace:GapView"
xmlns:Classes="clr-namespace:GapView.Classes"

内部

<Classes:ConverterClass x:Key="BorderConverter" /> 

最后,我适用于 Border 元素。 而 SettingThumbWidth 是一个 TextBox 元素。

<Border  Width="{Binding Path=Text , ElementName=SettingThumbWidth, Converter={StaticResource BorderConverter}}" Height="166" >

当我按下“。”在 BorderConverter 之后,子类 PhotoBorderConverter 不会显示,似乎我无法访问。

那么我该如何解决这个问题?

因为可能有其他Converter,所以我想集中在一个ConvertClass中。

谢谢。

【问题讨论】:

    标签: wpf


    【解决方案1】:

    你决定集中到ConverterClass 有点奇怪和不必要。您可以将所有转换器保存在一个文件中,但无需将它们封装在外部类中。

    根据您目前拥有的,尝试使用正确的命名空间,如下所示:

    xmlns:converters="clr-namespace:GapView.Classes.ConverterClass"
    
    
    <converters:PhotoBorderConverter x:Key="BorderConverter" />
    

    【讨论】:

    • 它编译错误并说:“使用命名空间指令只能应用于命名空间;'GapView.Classes.ConverterClass'是一种类型而不是命名空间。”但我同意你的看法,在这种情况下不需要封装在父类中。我进行更改并将所有转换器类放在命名空间内。重建并完美运行。谢谢指正。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多