XAML:将textbox maxlength绑定到类常量

XAML:将textbox maxlength绑定到类常量,xaml,binding,textbox,constants,maxlength,Xaml,Binding,Textbox,Constants,Maxlength,我试图将WPF textbox的Maxlength属性绑定到类中的已知常量。我用的是c# 该类的结构与以下内容没有太大区别: namespace Blah { public partial class One { public partial class Two { public string MyBindingValue { get; set; } public static class Me

我试图将WPF textbox的Maxlength属性绑定到类中的已知常量。我用的是c#

该类的结构与以下内容没有太大区别:

namespace Blah
{
    public partial class One
    {
        public partial class Two
        {
             public string MyBindingValue { get; set; }

             public static class MetaData
             {
                 public static class Sizes
                 {
                     public const int Length1 = 10;
                     public const int Length2 = 20;
                 }
             }
        }
    }
}
<Textbox Text="{Binding Path=MyBindingValue}" MaxLength="{Binding Path=Blah.One.Two.MetaData.Sizes.Length1}" />
是的,它是深度嵌套的,但不幸的是,在这个例子中,如果不进行大量的重写,我就无法进行很多工作

我希望能够将文本框MaxLength绑定到Length1或Length2值,但我无法让它工作

我希望绑定的内容如下所示:

namespace Blah
{
    public partial class One
    {
        public partial class Two
        {
             public string MyBindingValue { get; set; }

             public static class MetaData
             {
                 public static class Sizes
                 {
                     public const int Length1 = 10;
                     public const int Length2 = 20;
                 }
             }
        }
    }
}
<Textbox Text="{Binding Path=MyBindingValue}" MaxLength="{Binding Path=Blah.One.Two.MetaData.Sizes.Length1}" />

感谢您的帮助


非常感谢

尝试使用x:Static绑定。将名称空间大小为的xmlns:local名称空间添加到xaml头中,然后使用如下内容绑定:

{x:Static local:Sizes.Length1}

不幸的是,通过以下操作,我得到了一个错误
未找到“One.Two.MetaData.size”。我无法创建比“Blah”更深的本地名称空间(无论如何根据VS2008)


如果一个不是静态类,则不能使用x:static绑定到它。为什么使用内部类?如果元数据在两个之外,并且大小是一个属性,那么可以使用x:Static轻松访问它。 在这种情况下,不能绑定到类型,只能绑定到现有对象。但一和二是类型,而不是对象

MaxLength="{x:Static local:One+Two+MetaData+Sizes.Length1}"
周期引用属性。加号表示内部类。

已修复

最初我尝试这样做:

{Binding Path=MetaData+Sizes.Length1}
编译正常,但是绑定在运行时失败,尽管类'Two'是datacontext,但路径无法解析为内部静态类(我是否可以执行类似以下操作:{binding path={x:static MetaData+Size.Length1}}?)

我不得不稍微修改一下我的类的布局,但是绑定现在起作用了

新的班级结构:

namespace Blah
{
    public static class One
    {
        // This metadata class is moved outside of class 'Two', but in this instance
        // this doesn't matter as it relates to class 'One' more specifically than class 'Two'
        public static class MetaData
        {
            public static class Sizes
            {
                public static int Length1 { get { return 10; } }
                public static int Length2 { get { return 20; } }
            }
        }

        public partial class Two
        {
            public string MyBindingValue { get; set; }
        }
    }
}
那么我的约束声明如下:

这似乎工作正常。我不确定是否需要将常量转换为属性,但这样做似乎没有任何危害


谢谢大家的帮助

这是有用的信息!但我还没有足够的声誉去点击它!对我也很有用。谢谢斯图史密斯
xmlns:local="clr-namespace:Blah"
MaxLength="{x:Static local:MetaData+Sizes.Length1}"