Data binding Silverlight中的Listbox绑定
我在silverlight页面上有一个列表框,页面的datacontext被设置为一个实例-TestQuestions,请参阅下面的代码。listbox使用一个DataTemplate,它的ItemSource是“Answers”,这是页面DataContext的一个属性,在我尝试绑定到DataTemplate中页面DataContext的一个属性“ShowAnswer”之前,一切正常。不管我怎么做,它都不会选择房产的价值 谢谢大家的帮助 Xaml: C:Data binding Silverlight中的Listbox绑定,data-binding,silverlight-4.0,listbox,Data Binding,Silverlight 4.0,Listbox,我在silverlight页面上有一个列表框,页面的datacontext被设置为一个实例-TestQuestions,请参阅下面的代码。listbox使用一个DataTemplate,它的ItemSource是“Answers”,这是页面DataContext的一个属性,在我尝试绑定到DataTemplate中页面DataContext的一个属性“ShowAnswer”之前,一切正常。不管我怎么做,它都不会选择房产的价值 谢谢大家的帮助 Xaml: C: }在我看来,您正在尝试将UIEleme
}在我看来,您正在尝试将UIElement.Visibility绑定到布尔值。将“ShowAnswer”属性从布尔值更改为可见性属性,您应该进行设置
private Visibility showAnswer = Visibility.Collapsed;
public Visibility ShowAnswer
{
get { return showAnswer; }
set
{
showAnswer = value;
NotifyPropertyChanged("ShowAnswer");
}
}
编辑:
如果试图绑定到父控件的DataContext上的属性,可以执行以下操作:
<StackPanel Visibility="{Binding DataContext.ShowAnswer, ElementName=mainProtoPage}">
命名你的用户控件
例如:
<UserControl x:Class="MvvmLightProto.MainPage"
x:Name="mainProtoPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Height="700"
Width="1200">
在上面的示例中,UserControl的名称为mainProtoPage,现在在XAML中,您可以执行以下操作:
<StackPanel Visibility="{Binding DataContext.ShowAnswer, ElementName=mainProtoPage}">
谢谢你的回复。主要问题是我无法绑定到ItemSource对象中未声明的属性。至于绑定到布尔值的可见性,我实际上使用的是一个转换器,代码中没有它。啊,我明白了。我已经编辑了我的答案,我想这就是你现在想要的。再次感谢你的回复。在资源文件中声明模板的情况如何?我尝试使用正在使用资源文件的页面的类名,但没有成功。谢谢。不要使用x:类名,请使用x:类名。在我的示例中,我使用mainProtoPage是因为我的x:Name=mainProtoPage。
<StackPanel Visibility="{Binding DataContext.ShowAnswer, ElementName=mainProtoPage}">