gpt4 book ai didi

Silverlight 标签内容绑定(bind)问题

转载 作者:行者123 更新时间:2023-12-03 10:41:02 27 4
gpt4 key购买 nike

我会在这之前说,我大约一周前是 Silverlight 开发的新手,所以我很可能做错了......

无论如何,我在 XAML 中完成了一个标签和一个文本框:

<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 属性上执行的绑定(bind),该属性转到我的 ViewModel 中的 bool 值,该 bool 值是基于对身份验证服务的调用设置的,现在将标签内容覆盖到名称我的 ViewModel 属性:IsNotAdmin。我似乎无法找到一种方法来指定从哪个数据绑定(bind)源中提取标签内容 MetaData。也许我错过了一些关于如何从我的 ViewModel 操作控件可编辑性/可见性的东西。

--更新:TextBox绑定(bind)的数据源类如下​​(针对相关部分):
public class RoleSummary {

[Display(Name= "Job Code (To be Completed by HR):")]
public string Job_Code { get; set; }

如果没有绑定(bind)到 IsReadOnly 属性,Label 可以很好地显示数据注释中的文本。当我添加绑定(bind)时,它显示“IsNotAdmin”

最佳答案

您可以发布更多代码吗?我不完全确定您要实现的目标是什么,因此很难提出解决方案。

我假设您正在尝试创建一个对其执行验证的文本输入元素(因此是标签)——但是标签应该为其内容显示的究竟是什么?

编辑:我想通了。默认情况下,标签控件会查看其数据上下文中的所有属性,以查找它可以使用的元数据。无论出于何种原因,它决定在您的代码中使用 IsNotAdmin 属性的元数据(即使您没有手动设置它,我假设 Display 元数据获取属性名称的默认值),因此您可以为标签的文本。

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}" />

只要您的数据上下文是正确的(应该是正确的),这应该对您有用——它在我从您的代码中重建的示例中有效。

关于Silverlight 标签内容绑定(bind)问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1923035/

27 4 0