2008-10-24 29 views
18

我正試圖將WPF文本框的Maxlength屬性綁定到類中的已知常量。我正在使用C#。XAML:將文本框maxlength綁定到類常量

類有沒有太多不同以下的結構:

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值,但我無法讓它工作。

我期待的結合是類似以下內容:

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

任何幫助表示讚賞。

非常感謝

回答

6

固定!

起初,我試着這樣做:

{Binding Path=MetaData+Sizes.Length1} 

其編譯OK,但是結合在運行時,儘管失敗的類「兩課」是路徑無法解析成內部靜態類DataContext的(可能我做了這樣的事情︰{綁定路徑= {x:靜態元數據+ 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}" 

這似乎工作確定。我不確定這些常量是否需要轉換爲屬性,但這樣做似乎沒有任何傷害。

謝謝大家的幫助!

0

試着用x:Static來綁定。同尺寸的命名空間的本地命名空間的XAML頭,然後用像這樣綁定:添加的xmlns

{x:Static local:Sizes.Length1} 
0

不幸的是,我得到的錯誤Type 'One.Two.MetaData.Sizes' not found以下。我不能創建一個本地命名空間比「嗒嗒」更深(以及根據VS2008反正)

xmlns:local="clr-namespace:Blah" 

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

如果一個人是不是你不能綁定到它與X靜態類:靜態。爲什麼使用內部類?如果元數據超出兩個,並且Sizes是一個屬性,則可以使用x:Static輕鬆訪問它。 在這種情況下,您不能綁定到類型,只能綁定到現有對象。但一和二是類型,而不是對象。

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

期間引用屬性。加號表示內部類。

+0

這是有用的信息!但是我沒有足夠的聲望來點擊它! – Ash 2008-10-24 12:44:00