XAML : 텍스트 상수 maxlength를 클래스 상수로 바인딩



Answers

결정된!

처음에 나는 이것을 시도했다.

{Binding Path=MetaData+Sizes.Length1}

컴파일 '확인'하지만 런타임에 바인딩이 실패했습니다. '2'클래스가 내부 정적 클래스로 해결할 수없는 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}"

어느 것이 잘 작동하는 것 같습니다. 상수를 속성으로 변환해야하는지 여부는 확실하지 않지만 그렇게하는 데 아무런 해가없는 것으로 보입니다.

도움을 주신 모든 분들께 감사드립니다!

Question

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;
                 }
             }
        }
    }
}

네, 깊이 중첩되어 있지만, 불행히도이 인스턴스에서는 커다란 재 작성이 필요없이 대단히 많이 움직일 수 없습니다.

나는 TextLength MaxLength를 Length1 또는 Length2 값에 바인딩 할 수 있기를 바랬지 만 제대로 작동하지 않습니다.

나는 다음과 같은 바인딩을 기대하고 있었다 :

<Textbox Text="{Binding Path=MyBindingValue}" MaxLength="{Binding Path=Blah.One.Two.MetaData.Sizes.Length1}" />

어떤 도움을 주셔서 감사합니다.

많은 감사




불행히도, 다음과 같은 Type 'One.Two.MetaData.Sizes' not found 오류가 발생합니다. 나는 "어쩌면 VS2008"에 따르면 "어쩌구"보다 더 깊은 로컬 네임 스페이스를 만들 수 없다.

xmlns:local="clr-namespace:Blah"

MaxLength="{x:Static local:One.Two.MetaData.Sizes.Length1}"



Related