2009-12-17 97 views
1

我前言本,說我是新來Silverlight開發了大約一週,所以我很可能這樣做是錯誤...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屬性的名稱:IsNotAdmin。我似乎無法找到一種方法來指定從哪個數據綁定源拉取標籤內容MetaData。也許我錯過了一些關於如何操作ViewModel的控件可編輯性/可見性的東西。

--update:數據源的類,文本框被綁定到如下(對於相關部分):

public class RoleSummary { 

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

沒有結合IsReadOnly屬性的標籤顯示從數據中的文本註釋很好。當我添加綁定它顯示「IsNotAdmin」

+0

看到我的編輯如下,這應該照顧到這一點。 – 2009-12-17 18:48:03

回答

1

你可以發佈更多的代碼嗎?我不完全確定你想要實現的目標是什麼,所以很難提出解決方案。

我假設你正在嘗試創建一個文本條目元素,並對其進行了驗證(因此標籤) - 但標籤應該顯示的內容是什麼?

編輯:我想通了。默認情況下,標籤控件會查看其datacontext中的所有屬性,以查找可以使用的元數據。無論出於何種原因,它決定在代碼中使用IsNotAdmin屬性的元數據(即使您沒有手動設置它,我假設顯示元數據獲取屬性名稱的默認值),因此您可以獲得標籤的文字。

微軟把在屬性符到數據控件,以便你可以告訴它哪個屬性應爲元數據查找中使用:的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是正確的(它應該是)這應該爲你工作 - 它在我的示例中工作,我從你的代碼重構。

+0

嗨 - 文本框的數據源具有應用於Job_Code屬性的Display(name =)數據註釋屬性,並且設置爲「作業代碼(由HR完成)」,如果我顯示的內容非常好刪除IsReadOnly屬性上的綁定。當我在標籤中添加綁定時顯示「IsNotAdmin」 – jemerick 2009-12-17 17:37:08

+0

太棒了。這工作。謝謝! – jemerick 2009-12-17 21:34:33