Так что я только что присоединился к команде Windows Phone, где они, как правило, чтобы сделать что-то вдоль линий этого:Скрыть элементы против DataTriggers
<Image Width="74"
Height="74"
Source="ms-appx:///Assets/ImageCatagory/shoot icon.png"
Visibility="{Binding SomeBoolParameter,
Converter={StaticResource InvertedBoolToVisibilityConverter}}" />
<Image Width="74"
Height="74"
Source="ms-appx:///Assets/ImageCatagory/shoot icon disabled.png"
Visibility="{Binding SomeBoolParameter,
Converter={StaticResource BoolToVisibilityConverter}}" />
Я посмотрел его и подумал про себя: дублирования кода, загрузка 2 элементов в пользовательский интерфейс, который (хотя и второстепенный) загружает ненужную память - зачем загружать оба изображения, когда вам нужно только одно в любой момент?
Я изменил его выглядеть следующим образом:
<Image x:Name="HelperButtonIcon"
Margin="19 0">
<i:Interaction.Behaviors>
<core:DataTriggerBehavior Binding="{Binding SomeBoolParameter}"
ComparisonCondition="Equal"
Value="True">
<core:ChangePropertyAction PropertyName="Source"
TargetObject="{Binding ElementName=HelperButtonIcon}"
Value="ms-appx:///Assets/ImageCatagory/helper icon on.png" />
</core:DataTriggerBehavior>
<core:DataTriggerBehavior Binding="{Binding SomeBoolParameter}"
ComparisonCondition="Equal"
Value="False">
<core:ChangePropertyAction PropertyName="Source"
TargetObject="{Binding ElementName=HelperButtonIcon}"
Value="ms-appx:///Assets/ImageCatagory/helper icon off.png" />
</core:DataTriggerBehavior>
</i:Interaction.Behaviors>
С помощью DataTriggers я использую только 1 элемент в любой момент времени, который кажется более эффективным для меня. Тем не менее, код получает завышенное немного для совсем малого, и, кроме того, я немного боюсь за проблемы с производительностью, связанные с загрузкой и переключением изображений. Я не нашел ничего относительно лучших практик в этом вопросе, и хотя я уверен, что это лучше, я бы хотел быть уверенным. Вопрос в следующем:
Является ли использование триггеров данных для переключения свойств этих идентичных элементов лучше, чем переключатель видимости?
Обратите внимание, что вы также можете установить значение по умолчанию для одного из этих URL-адресов в стиле и сделать только один источник данных для второго – nkoniishvt