当前位置:  开发笔记 > 编程语言 > 正文

XAML:将文本框maxlength绑定到Class常量

如何解决《XAML:将文本框maxlength绑定到Class常量》经验,为你挑选了2个好方法。

我试图将WPF文本框的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;
                 }
             }
        }
    }
}

是的,它是深层嵌套的,但不幸的是在这种情况下,如果不需要大量重写,我就无法移动.

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

我期待绑定类似于以下内容:


任何帮助表示赞赏.

非常感谢



1> stusmith..:
MaxLength="{x:Static local:One+Two+MetaData+Sizes.Length1}"

期间参考属性.加号是指内部类别.



2> Ash..:

固定!

最初我尝试这样做:

{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}"

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

谢谢你们每一个人的帮助!

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有