2011-02-09 7 views
0

こんにちは 私は銀色に新しいです。 私のビューには、ビューモデルにバインドされたstackpanel1という名前のInternalとExternalという2つのラジオボタンがあります。 stackpanel2の 私はテキストブロックとボタンを持っています。 今、私は内部のラジオボタンstackpanel2を選択する必要があり、外部選択stackpanel2は見えないはずです。 私はどのように私のviewmodelにstackpanel2可視性プロパティをバインドします。 plsはできるだけ早く問題を解決します。Stackpanel可視性プロパティをバインドする方法

+0

FYI:「できるだけ早く」はここでは無礼とみなされます。あなたの評価では、あなたの質問は他よりも重要であることを意味します。 – AnthonyWJones

答えて

0

データモデルに新しいVisibilityプロパティを追加し、このプロパティをstackpanel Visibilityプロパティにバインドする必要があります。さらに、これをブール値プロパティにバインドすることもできますが、コンバーターが必要です。 Silverlightのコンバーターは、割り当てられた値をプロパティー型の値に変換します。

ここでコンバータを構築する方法を学ぶことができます。アンジュ@ http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx

+0

私はあなたに好意を持っていませんでした.Pls Convertor、xzml、およびviewmodelのコーディングを表示します。 – anuj

+0

@anuj:コメントの文字数制限は600文字です。これはツイッターやSMSではありません。 「あなた」の代わりに「u」のような収縮の使用はお勧めしません。 – AnthonyWJones

1

無問題、あなたはこれが今、uは、このようなあなたのビューモデルからブール型プロパティを持つのStackPanelのVisibilityプロパティをバインドする必要があり、視界コンバータにごブール値になりますIValueConverterとそれを継承する新しいクラスを追加する必要があります。

<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> 

あなたはデータコンテキストに "のisVisible" という名前のプロパティを持っている必要があります。 Converterはブール値と戻り値を変換します。

コンバーターコード

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 
} 

ちょうどあなたが私の場合コンバータクラスに知らせたいプロジェクトのルートにフォルダ「クラス」です。 あなたの問題を解決することを願っています。

+0

それはありました。 – anuj

関連する問題