2011-02-09 65 views
0

嗨 我是新來的silverlight 4. 我有兩個單選按鈕在我的視圖中名稱內部和外部在stackpanel1,綁定到我的視圖模型。我有文本塊和按鈕,在stackpanel2中有 。 現在我需要什麼時,我選擇內部單選按鈕stackpanel2應該是可見的,並在外部選擇stackpanel2應該是看不見的。 所以我如何將stackpanel2可見性屬性綁定到我的viewmodel。 請儘快解決問題。如何綁定堆棧面板的可見性屬性

+0

供參考:「儘快」在這裏被認爲是粗魯的。這意味着在您的評估中,您的問題比其他問題更重要。 – AnthonyWJones 2011-02-09 13:29:54

回答

0

您必須在您的數據模型中添加新的Visibility屬性,然後將此屬性綁定到stackpanel Visibility屬性,進一步將其綁定到布爾屬性,但您需要轉換器。 silverlight中的轉換器將任何指定的值轉換爲屬性類型的值。

您可以在此處瞭解如何構建轉換器。 http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx

+0

我沒有得到你可以幫我一個忙。請顯示Convertor,xzml和viewmodel的編碼。 – anuj 2011-02-09 10:28:47

+0

@anuj:評論的文字限制爲600個字符。這不是推特或短信。不鼓勵使用諸如「你」而不是「你」的收縮。 – AnthonyWJones 2011-02-09 13:31:44

1

@安居沒有問題,你必須添加一個新類的IValueConverter繼承它,這將是您的布爾能見度轉換器,現在u必須綁定StackPanel的Visibility屬性與你這樣的視圖模型布爾屬性:

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

,你應該有一個屬性名爲數據上下文 「可見性」。轉換器將轉換布爾值並返回可見性值。

轉換代碼

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 
} 

只想讓你知道我的情況下,轉換器類是在文件夾「類」在項目的根目錄。 希望它能解決你的問題。供參考:

相關問題