Binding de UserControl.Content via un Converter
Hello tout le monde
J'ai disons 3 views appelées view1, view2 et view3.
Dans ma MainView, je souhaite avoir l'une des 3 vues suivant une valeur de mon ViewModel.
J'ai donc bindé le Content de mon UserControl sur cette valeur via un converter.
En gros, cela donne pour le xaml:
Code:
1 2 3 4 5 6 7
| <toolbox:DiView.Resources>
<help:SimulationParametersViewConverter x:Key="resSimulationParametersViewConveter" />
</toolbox:DiView.Resources>
<Grid Height="auto" Width="auto" x:Name="UiMainLayout" DataContext="{Binding View, Source={StaticResource resViewLocator}}">
<UserControl x:Name="SimulationParametersView" Content="{Binding ViewModel.PricingTask.PayoffID, Converter={StaticResource
</Grid> |
Et pour le converter:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| public class SimulationParametersViewConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Int16 payoffID;
if (value == null)
return null;
if (!Int16.TryParse(value.ToString(), out payoffID))
return null;
switch (payoffID)
{
case 1: // sweet reverse
return new Views.View1();
case 14: // autocall
return new Views.View2();
case 23: // reverse convertible
return new Views.View3();
default:
throw new ArgumentException("The current PayoffID doesn't exist");
break;
}
}
} |
Cela fonctionne comme je veux sauf que les differentes vues 1, 2 ou 3 ne sont pas détruites quand je switch de l'une à l'autre et ça me pose des problèmes de validation.
Comment faire pour réinitialiser le Content de mon UserControl entre chaque switch???
Merci