Исправлено!
Сначала я попытался сделать это:
{Binding Path=MetaData+Sizes.Length1}
, что скомпилировано нормально, однако привязка не удалась во время выполнения, несмотря на то, что класс 'Two' является текстовым текстом, который путь не может разрешить во внутренние статические классы (мог бы я сделать что-то вроде: {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}"
Что, кажется, работает нормально. Я не уверен, нужно ли преобразовывать константы в свойства, но в этом нет никакого вреда.
Спасибо всем за помощь!