У меня есть сценарий, в котором два списка должны отображаться в одном окне, но пользователь может выбрать только один из них и продолжить.
Допустим, listbox1 и listbox2, если пользователь выбирает элемент в listbox1 и снова выберите из listbox2, выбранный элемент в listbox1 должен быть удален.
Я должен добиться этого только через xaml, а не из codebehind. поэтому я попробовал следующее:
<Grid.Resources>
<Storyboard x:Key="temp" >
<Int32Animation Storyboard.TargetName="lstbox" Storyboard.TargetProperty="(ListBox.SelectedIndex)"
To="-1" Duration="0:0:.2" />
</Storyboard>
<Storyboard x:Key="temp1" >
<Int32Animation Storyboard.TargetName="listBox1" Storyboard.TargetProperty="(ListBox.SelectedIndex)"
To="-1" Duration="0:0:.2" />
</Storyboard>
</Grid.Resources>
Как указано выше, создал две раскадровки для установки selectedIndex в -1 и вызвал эту раскадровку, когда выбор изменил триггер события, как показано ниже:
<ListBox Name="listBox1" HorizontalAlignment="Left" Grid.Column="1">
<ListBox.Triggers>
<EventTrigger RoutedEvent="ListBox.SelectionChanged">
<BeginStoryboard Storyboard="{StaticResource temp}"/>
</EventTrigger>
</ListBox.Triggers>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="AliceBlue" />
<Setter Property="BorderBrush" Value="BlanchedAlmond" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
<ListBoxItem Content="Coffie"></ListBoxItem>
<ListBoxItem Content="Tea"></ListBoxItem>
<ListBoxItem Content="Orange Juice"></ListBoxItem>
<ListBoxItem Content="Milk"></ListBoxItem>
<ListBoxItem Content="Iced Tea"></ListBoxItem>
<ListBoxItem Content="Mango Shake"></ListBoxItem>
</ListBox>
<ListBox Name="lstbox" ItemsSource="{Binding MyData}" Grid.Column="1" Grid.Row="1" SelectionChanged="lstbox_SelectionChanged">
<ListBox.Triggers>
<EventTrigger RoutedEvent="ListBox.SelectionChanged">
<BeginStoryboard Storyboard="{StaticResource temp1}"/>
</EventTrigger>
</ListBox.Triggers>
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Background" Value="AliceBlue" />
<Setter Property="BorderBrush" Value="BlanchedAlmond" />
<Setter Property="BorderThickness" Value="2" />
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="DarkViolet" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
Через код позади, когда я установил для SelectedIndex значение -1, стили для selectedItem очищаются, но через раскадровку стили не очищаются.
Пожалуйста, расскажите другим способом или помогите мне заставить его работать. это только через xaml.
Спасибо,
Nagasree.