ComponentResourceKey не может быть разрешен при определении более одного - PullRequest
0 голосов
/ 01 сентября 2011

Я определил 3 стиля в ResourceDictionary во внешней сборке следующим образом:

<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=numbersOnly}" TargetType="TextBox">
...
</Style>

<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=positiveInt}" TargetType="TextBox">
...
</Style>

<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=positiveDecimal}" TargetType="TextBox">
...
</Style>

В той же сборке я определил класс, подобный этому:

public static class Common {
        public static ComponentResourceKey NumbersOnly {
            get {
                return new ComponentResourceKey(
                typeof(Common), "numbersOnly");
            }
        }
        public static ComponentResourceKey PositiveInt {
            get {
                return new ComponentResourceKey(
                typeof(Common), "positiveInt");
            }
        }
        public static ComponentResourceKey PositiveDecimal {
            get {
                return new ComponentResourceKey(
                typeof(Common), "positiveDecimal");
            }
        }
    }

Я использую эти стиликак это:

<TextBox Style="{DynamicResource {x:Static segres:Common.NumbersOnly}}" />

Это работает, если я определяю только одно свойство в классе выше, но если я определяю более одного (как выше) ресурса, он не может быть разрешен.

Почему это происходит?Такое поведение не кажется мне логичным.

1 Ответ

1 голос
/ 01 сентября 2011

Это ошибка в WPF с внешними словарями. Это произошло в 3.5 и перенесено в 4.0.

http://connect.microsoft.com/VisualStudio/feedback/details/553528/defaultstylekey-style-not-found-in-inner-mergeddictionaries

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...