喜 我是silverlight 4的新手。 我在视图中有两个单选按钮,名称为stackpanel1中的Internal和External,它们绑定到我的视图模型。 在stackpanel2我有文本块和按钮。 现在,当我选择内部单选按钮stackpanel2时,我需要的是可见的,而外部选择stackpanel2应该是不可见的。 我如何将stackpanel2可见性属性绑定到我的viewmodel。 请尽快解决问题。
答案 0 :(得分:1)
@ anju没问题,你必须添加一个新的类继承它与IValueConverter这将是你的bool到可见性转换器,现在你必须绑定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>
你应该在数据上下文中有一个名为“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
}
只是想让我知道在我的情况下,转换器类位于项目根目录的“类”文件夹中。 希望它能解决你的问题。
答案 1 :(得分:0)
您必须在数据模型中添加新的Visibility属性,然后将此属性绑定到stackpanel Visibility属性,您还可以将其绑定到布尔属性,但是您需要转换器。 silverlight中的转换器将任何指定的值转换为属性类型的值。
您可以在此处了解如何构建转换器。 http://weblogs.asp.net/dwahlin/archive/2009/08/15/so-what-s-a-silverlight-value-converter-anyway.aspx