2011-02-09 6 views
0

salut je suis nouveau à silverlight 4. J'ai deux boutons radio dans mes vues par nom interne et externe dans un stackpanel1, qui sont liés à mon modèle de vue. dans stackpanel2 j'ai le bloc de texte et le bouton. maintenant ce dont j'ai besoin quand je sélectionne le bouton radio interne stackpanel2 devrait être visible et sur la sélection externe stackpanel2 devrait être invisible. alors comment je lie la propriété de la pile stackpanel2 à mon viewmodel. pls résoudre un problème dès que possible.Comment lier la propriété de visibilité stackpanel

+0

FYI: "dès que possible" est considéré grossier ici à SO. Cela implique que dans votre évaluation, votre question est plus importante que d'autres. – AnthonyWJones

Répondre

0

Vous devez ajouter une nouvelle propriété Visibility dans votre modèle de données, puis lier cette propriété à la propriété Visibility de stackpanel. Vous pouvez également la lier avec une propriété booléenne, mais vous avez besoin d'un convertisseur. Les convertisseurs dans Silverlight convertissent toute valeur affectée à une valeur de type de propriété.

Vous pouvez apprendre à construire un convertisseur ici. http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx

+0

je n'ai pas eu.Pouvez-vous me faire une faveur.Pls Afficher le codage de Convertor, xzml et viewmodel. – anuj

+0

@anuj: La limite de texte sur les commentaires est de 600 caractères. Ce n'est pas twitter ou SMS. L'utilisation de contractions telles que "u" au lieu de "vous" est déconseillée. – AnthonyWJones

1

@ Anju sans problème, vous devez ajouter une nouvelle classe héritera avec IValueConverter ce sera votre bool convertisseur de visibilité, maintenant u doivent Liez StackPanel propriété de visibilité à la propriété booléenne de votre modèle de vue comme celui-ci:

<UserControl 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:GreenScreenApp.classes" x:Class="GreenScreenApp.one" > 
<UserControl.Resources> 
    <local:VisibilityConverter x:Key="BoolToVisibilityConverter"/> 
</UserControl.Resources> 
<Grid DataContext="MyDataSource" x:Name="LayoutRoot" > 
    <StackPanel x:Name="stackpanel2" Visibility="{Binding IsVisible, Converter={StaticResource BoolToVisibilityConverter}}"> 
    </StackPanel> 
</Grid> 

vous devriez avoir une propriété nommée "IsVisible" dans le contexte de données. Le convertisseur convertira les valeurs booléennes et renverra les valeurs de visibilité.

Convertisseur de code

public class VisibilityConverter : IValueConverter 
{ 

    #region IValueConverter Members 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     var v = value; 

     if (v == "true") 
      return "Visible"; 
     else 
      return "Collapsed"; 

    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 

    #endregion 
} 

veux juste vous faire savoir dans ma classe cas de conversion est dans le dossier « classes » à la racine du projet. Espérons que cela va résoudre votre problème.

+0

il a fait.grande merci – anuj

Questions connexes