У меня есть несколько раскадровки, которые получают доступ к одному и тому же свойству (не в одно и то же время). После того, как одна раскадровка изменила собственность, другая, похоже, не имеет к ней доступа и ничего не меняет. Что я могу сделать против этого?Несколько раскадровки на одном объекте
Пример:
<ListBox>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListBoxItem}">
<Border Name="Border" BorderBrush="DarkGray" BorderThickness="1" Margin="3">
<ContentPresenter />
<Border.Background>
<SolidColorBrush />
</Border.Background>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsSelected" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="#3e8bff" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="White" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True" />
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="Orange" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetName="Border" Storyboard.TargetProperty="Background.Color" To="White" Duration="0:0:0.1" />
</Storyboard>
</BeginStoryboard>
</MultiTrigger.ExitActions>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ListBox.ItemContainerStyle>
<ListBox.Items>
<sys:String>hey</sys:String>
<sys:String>du</sys:String>
<sys:String>dux</sys:String>
<sys:String>duy</sys:String>
<sys:String>dua</sys:String>
</ListBox.Items>
</ListBox>
Это самый маленький пример кода, я мог бы сделать. После того, как вы наведете элемент, он не станет синим, когда он будет выбран (попробуйте щелкнуть по одному элементу, а затем с помощью клавиш со стрелками выбрать элементы, не зависая их).
Что именно вы подразумеваете под «другим, похоже, нет доступа к нему и ничего не меняет»? Вы получили сообщение об ошибке? Конкретное неожиданное поведение? –
Чтобы быть более конкретным, у меня есть ListBox. В ItemContainerStyle я определяю шаблон для всех ListBoxItems. Здесь я запускаю IsMouseOver и IsSelected и определяю Storyboard для эффекта постепенного выцветания. Когда элемент парит, фон должен быть оранжевым, а когда он выбран, он должен стать синим. Я могу навешивать один элемент столько раз, сколько хочу, он работает. Но если я его выберу и снова отменим выбор, эффект зависания больше не работает. Если я использую разные свойства, он все равно работает. – eWolf
Кажется, что-то с порядком триггеров. Если я поставлю триггер IsSelected перед триггером IsMouseOver (который, кстати, является MultiTrigger и не поднимается, когда элемент IsSelected), это наоборот: эффект IsSelected не работает после того, как элемент был завис один раз. – eWolf