Question rapide ...
J'ai une liste code> avec son itemsSource code> propriété reliée à une propriété de collection dans une vue de vue comme suit: p>
<ListBox Name="CollectionsListBox">
<ListBox.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=TimesheetsButton,Path=IsChecked}" Value="True">
<Setter Property="ListBox.ItemsSource" Value="{Binding Activity.Timesheets}" />
<Setter Property="ListBox.ItemContainerStyle" Value="{StaticResource TimesheetStyle}" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=AttachmentsButton,Path=IsChecked}" Value="True">
<Setter Property="ListBox.ItemsSource" Value="{Binding Activity.Attachments}" />
<Setter Property="ListBox.ItemContainerStyle" Value="{StaticResource AttachmentStyle}" />
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
3 Réponses :
Je ne sais pas si le bouton peut faire cela. Mais Radiobutton peut vous satisfaire uniquement dans XAML.
Disons que nous avons deux Enum: p> Je les ai définis comme ressource dans XAML: P> <ListBox x:Name="List1">
<ListBox.Style>
<Style>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=Rdb1,Path=IsChecked}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="ListBox.ItemsSource" Value="{Binding Source={StaticResource EProvider}}" />
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding ElementName=Rdb2,Path=IsChecked}" Value="True"/>
</MultiDataTrigger.Conditions>
<Setter Property="ListBox.ItemsSource" Value="{Binding Source={StaticResource FProvider}}" />
</MultiDataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
<RadioButton x:Name="Rdb1" GroupName="Group1" />
<RadioButton x:Name="Rdb2" GroupName="Group1" />
Alors que je lie à un point de vue, j'ai pu faire une version simplifiée de votre exemple. Merci beaucoup.
Je vous en prie. Je pense juste qu'il y a tant de limites sur la gâchette. Peut-être que nous pouvons avoir une autre question en parlant de cela.
à ma surprise Ce qui suit semble fonctionner: EDIT: strong> Si cela fonctionne apparemment dépend de la nature de l'itemsSource. Les animations sont un peu désordonnées à cet égard. L'utilisation d'états constants est mieux par exemple. Comme suggéré avec Radiobuttons Depuis lors, des setters peuvent être utilisés. p> p>
Merci. Je suis allé avec radiobutton code> s à la fin comme vous l'avez suggéré.
Autant que je comprends, c'est ce dont vous avez besoin -
Voici comment j'ai fait xaml strong> p>
P>
1) code derrière (avec deux énumjets) p> <ObjectDataProvider ObjectType="{x:Type sys:Enum}"
MethodName="GetValues"
x:Key="Enum2Provider">
<ObjectDataProvider.MethodParameters>
<x:TypeExtension Type="{x:Type local:Enum2}" />
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
</Window.Resources>
<Grid>
<!-- ListBox-->
<ListBox x:Name="DynamicListBox"
Padding="10" HorizontalAlignment="Left" Width="52" Margin="20,21,0,115">
<ListBox.Style>
<Style TargetType="{x:Type ListBox}">
<Setter Property="ItemsSource"
Value="{Binding Source={StaticResource Enum1Provider}}"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=ToggleItemSource,
UpdateSourceTrigger=PropertyChanged
}"
Value="False">
<Setter Property="ItemsSource"
Value="{Binding Source={StaticResource Enum2Provider}}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListBox.Style>
</ListBox>
<!-- Toggle Button -->
<Button Height="29"
Margin="94,45.44,59,0"
Name="button1"
VerticalAlignment="Top"
Click="button1_Click"
Content="ToggleItemSource" />
</Grid>
Merci pour votre temps, mais j'ai trouvé une réponse plus simple.
J'ai senti le besoin de vous donner un uppote juste pour les efforts passés. Au moins cela m'a aidé.