Il n'existe pas de sélecteur de modèle de données ou de modèle de données spécifique au type dans Silverlight. Une façon de contourner ce problème est d'avoir une propriété dans votre ViewModel qui déclenche la visibilité de quelque chose dans le XAML. Par exemple, ayez un élément dans votre modèle d'élément DataGrid où la visibilité est liée à une propriété comme IsSelected dans votre ViewModel et utilisez un convertisseur de valeur BooleanToVisibility.
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="130" />
<ColumnDefinition Width="70" />
<ColumnDefinition Width="70" />
<ColumnDefinition Width="50" />
</Grid.ColumnDefinitions>
<Grid Grid.ColumnSpan="4"
Visibility="{Binding Path=IsSelected, Converter={StaticResource BoolToVisibilityConverter}}">
<Border Style="{StaticResource SelectedDataGridRowStyle}" />
</Grid>
<!-- other stuff here -->
</Grid>
</DataTemplate>
Si vous n'avez pas défini votre propre booléenne convertisseur de valeur visbility encore ...
public class BoolToVisibilityConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var visible = true;
if (value != null && value is bool)
visible = (bool)value;
var reverse = false;
if (parameter != null)
reverse = System.Boolean.Parse((string)parameter);
visible = reverse ? !visible : visible;
return visible ? System.Windows.Visibility.Visible : System.Windows.Visibility.Collapsed;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var visibility = System.Windows.Visibility.Visible;
if (value != null && value is System.Windows.Visibility)
visibility = (System.Windows.Visibility)value;
var reverse = false;
if (parameter != null && parameter is bool)
reverse = (bool)parameter;
var visible = visibility == System.Windows.Visibility.Visible;
visible = reverse ? !visible : visible;
return visible;
}
}
Cest génial! merci d'avoir pris le temps d'écrire ça. – bplus