Проблемы с привязкой контента в Silverlight Label - PullRequest
1 голос
/ 17 декабря 2009

Я предвосхищу это и скажу, что я новичок в разработке Silverlight примерно через неделю, поэтому я, скорее всего, делаю это неправильно ...

В любом случае, у меня есть ярлык и TextBox, таким образом, в 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, который переходит к логическому значению в моей ViewModel, который устанавливается на основе вызова службы аутентификации, теперь переопределяет метку Content на имя моего свойства ViewModel: IsNotAdmin. Я не могу найти способ указать, из какого источника привязки данных извлекать метаданные содержимого метки. Может быть, я что-то упустил из-за того, как манипулировать редактируемой яркостью / видимостью из моей ViewModel.

- Обновление: класс источника данных, с которым связан TextBox, выглядит следующим образом (для соответствующих частей):

public class RoleSummary {

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

Без привязки к атрибуту IsReadOnly метка отлично отображает текст из аннотации данных. Когда я добавляю привязку, отображается «IsNotAdmin»

1 Ответ

1 голос
/ 17 декабря 2009

Вы можете опубликовать больше своего кода? Я не совсем уверен, что вы пытаетесь сделать, поэтому трудно предложить решение.

Я предполагаю, что вы пытаетесь создать элемент ввода текста, в котором выполняется проверка (и, следовательно, метка), но что именно метка должна показывать для своего содержимого?

РЕДАКТИРОВАТЬ: Я понял это. Элемент управления меткой по умолчанию просматривает все свойства в его текстовом тексте и ищет метаданные, которые он может использовать. По какой-то причине он решил использовать метаданные для свойства 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}" />

До тех пор, пока ваш текст данных правильный (что и должно быть), это должно работать для вас - это сработало в моем примере, который я реконструировал из вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...