1

私はmvvmパターンのSilverlight5に疑問があります。xamlでは、1つのテキストブロックを使用し、その中にいくつかのIDをバインドしました。テキストブロックのコンテンツ値が1または2の場合は、さらに別のテキストボックスが表示されているか、折りたたまれていることを意味します。

私のコード:

 <TextBlock Name="textBlock1" Text="{Binding id}" Loaded="textBlock1_Loaded" Visibility="Collapsed" />
<TextBox Text="{Binding name,Mode=TwoWay}"  x:Name="t1" Visibility="{Binding IsVisible,Converter={StaticResource visibilityconverter}}" />

ビューモデルでは、idのプロパティを作成し、イベントを発生させ、値をtextblockにバインドしました。

値をvisibleに変換するには、「Converters」という名前の1つの別のフォルダーにvisibilityconverterクラスがあります。

public class visibilityconverter:IValueConverter
    {

       public object Convert(object value, Type targetType,
                                       object parameter, CultureInfo culture)
        {
            if (id==1 && id==2)
            {
                return Visibility.Visible;
            }
            return Visibility.Collapsed;
        }

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

    }

上記のvisibleconverterクラスで、viewmodelからid値を取得して確認する方法を説明します。viewmodelからvisibilityconverterに値を取得した場合は、さらに先に進むことを意味します。

できれば教えてください..!

4

1 に答える 1

3

こんにちは私は解決策を見つけました..

 In xaml give the following:

<TextBox Text="{Binding name,Mode=TwoWay}"  x:Name="t1" Visibility="{Binding id,Converter={StaticResource visibilityconverter}}" />

visibilityConverter クラス:

public class visibilityconverter:IValueConverter {

public object Convert(object value, Type targetType,
                               object parameter, CultureInfo culture)
{
    string v = value.ToString();
    if (v =="1" ||  v=="2")
    {
        return Visibility.Visible;
    }
    return Visibility.Collapsed;
}

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

}

問題が解決しました... !

于 2012-11-06T08:31:38.957 に答える