Silverlight标签内容绑定问题
我将在这篇文章的前言中说,大约一周前我对Silverlight开发是新手,所以我很可能做错了 无论如何,我有一个标签和一个文本框,用XAML完成:Silverlight标签内容绑定问题,silverlight,mvvm,Silverlight,Mvvm,我将在这篇文章的前言中说,大约一周前我对Silverlight开发是新手,所以我很可能做错了 无论如何,我有一个标签和一个文本框,用XAML完成: <dataInput:Label Target="{Binding ElementName=JobCode}" Height="18" HorizontalAlignment="Left" Margin="15,7,0,0" Name="lableJobCode" VerticalAlignment="Top" Width="250" Font
<dataInput:Label Target="{Binding ElementName=JobCode}" Height="18" HorizontalAlignment="Left" Margin="15,7,0,0" Name="lableJobCode" VerticalAlignment="Top" Width="250" FontWeight="Bold" Grid.Column="1" />
<TextBox Height="23" Text="{Binding SelectedRole.Job_Code}" HorizontalAlignment="Left" Margin="15,31,0,0" Name="JobCode" VerticalAlignment="Top" Width="277" Grid.Column="1" IsReadOnly="{Binding IsNotAdmin}" />
如果不绑定到IsReadOnly属性,则标签可以很好地显示数据注释中的文本。当我添加绑定时,它会显示“IsNotAdmin”您可以发布更多的代码吗?我不完全确定你想要实现什么,所以很难提出解决方案 我假设您正在尝试创建一个文本输入元素,该元素已对其执行验证(因此是标签)——但标签究竟应该为其内容显示什么 编辑:我想出来了。默认情况下,label控件查看其datacontext中的所有属性,以查找它可以使用的元数据。无论出于何种原因,它决定在代码中使用IsNotAdmin属性的元数据(即使您没有手动设置它,我假设显示元数据会获得属性名称的默认值),因此您可以获得标签文本的元数据 Microsoft在数据控件中添加了一个属性说明符,这样您就可以告诉它应该使用哪个属性进行元数据查找:PropertyPath 试着这样做:
<dataInput:Label Target="{Binding ElementName=JobCode}" PropertyPath="SelectedRole.Job_Code" Height="18" HorizontalAlignment="Left" Margin="15,7,0,0" Name="lableJobCode" VerticalAlignment="Top" Width="250" FontWeight="Bold" Grid.Column="1" />
<TextBox Height="23" Text="{Binding SelectedRole.Job_Code}" HorizontalAlignment="Left" Margin="15,31,0,0" Name="JobCode" VerticalAlignment="Top" Width="277" Grid.Column="1" IsReadOnly="{Binding IsNotAdmin}" />
只要您的datacontext是正确的(它应该是正确的),这应该对您有用——它在我从您的代码重建的示例中有效。您能发布更多的代码吗?我不完全确定你想要实现什么,所以很难提出解决方案 我假设您正在尝试创建一个文本输入元素,该元素已对其执行验证(因此是标签)——但标签究竟应该为其内容显示什么 编辑:我想出来了。默认情况下,label控件查看其datacontext中的所有属性,以查找它可以使用的元数据。无论出于何种原因,它决定在代码中使用IsNotAdmin属性的元数据(即使您没有手动设置它,我假设显示元数据会获得属性名称的默认值),因此您可以获得标签文本的元数据 Microsoft在数据控件中添加了一个属性说明符,这样您就可以告诉它应该使用哪个属性进行元数据查找:PropertyPath 试着这样做:
<dataInput:Label Target="{Binding ElementName=JobCode}" PropertyPath="SelectedRole.Job_Code" Height="18" HorizontalAlignment="Left" Margin="15,7,0,0" Name="lableJobCode" VerticalAlignment="Top" Width="250" FontWeight="Bold" Grid.Column="1" />
<TextBox Height="23" Text="{Binding SelectedRole.Job_Code}" HorizontalAlignment="Left" Margin="15,31,0,0" Name="JobCode" VerticalAlignment="Top" Width="277" Grid.Column="1" IsReadOnly="{Binding IsNotAdmin}" />
只要您的datacontext是正确的(它应该是正确的),这应该对您有效——它在我从您的代码重构的示例中有效。Hi——文本框的数据源将Display(name=)data annotation属性应用于Job_code属性,并设置为“Job code(由HR完成)”如果我删除IsReadOnly属性上的绑定,就会很好地显示这一点。当我在标签中添加绑定时,显示“IsNotAdmin”Hi——文本框的数据源具有应用于Job_Code属性的Display(name=)data annotation属性,并设置为“Job Code(由HR完成)”,如果我删除IsReadOnly属性上的绑定,这将非常好地显示。当我在标签显示“IsNotAdmin”中添加绑定时,请参阅下面的我的编辑,这应该会解决此问题。请参阅下面的我的编辑,这应该会解决此问题。