c# XAML WPF Как дочерний ресурс? - PullRequest
0 голосов
/ 14 апреля 2020

Я пытаюсь создать объект ресурса на странице XAML, который имеет дочерние объекты, генерирует данные, которые со временем меняются, и передает эти данные нескольким другим элементам управления на этой странице. Представьте себе объект, которому дают термометр, который часто запрашивает его, решает, является ли температура «холодной» или «горячей», а затем использует данные из XAML для указания цвета:

<GroupBox ...>
   <GroupBox.Resources>
      <local:MapTemperatureToColor x:Key="BackColor" Thermometer="{Binding Outside}">
         <local:Map Temperature="Cold" Color="Blue"/>
         <local:Map Temperature="Hot" Color="Red"/>
      </local:MapTemperatureToColor >
   </GroupBox.Resources>
   <Label Text="Hello" Background="{StaticResource BackColor}"/>
   <Button Text="Goodbye" Background="{StaticResource BackColor}"/>
</GroupBox>

Мой первый вопрос структурный - поскольку объект 'Parent' предоставляет значение другим элементам управления, я предполагаю, что он должен быть производным от MarkupExtension, а затем мне нужно вернуть Binding, чтобы я мог обновлять значение асинхронно? Это лучший способ сделать то, что я пытаюсь сделать sh? Да, я могу сделать это с помощью кода, но в реальной ситуации (которую сложно объяснить) я бы предпочел, чтобы цвета были указаны в XAML, поэтому все варианты пользовательского интерфейса находятся в одном файле.

Мой второй вопрос: конструктор XAML недоволен объектом MarkupExtension, у которого есть дочерние элементы. Если я не даю дочерним объектам (значения ключа «Map»), он говорит: «Значение не может быть пустым (параметр 'key')", а если я даю им значения ключа, он говорит: «Атрибут Key может использоваться только на элементе, который содержится в IDictionary ". Как создать ресурс с дочерними элементами в XAML, который не смущает конструктора?

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