2009-09-01 23 views
1

我知道Silverlight 3.0具有綁定功能,但僅僅需要一個關於如何使用它從類中讀取屬性的簡單示例。
我有一類稱爲任命其爲一個字符串屬性名爲地點:如何在Silverlight中進行簡單的綁定?

Public Property Location() As String 
     Get 
      Return _Location 
     End Get 
     Set(ByVal Value As String) 
      _Location = Value 
     End Set 
    End Property 

隨着對_Location當然的字符串私人宣言。
我希望有一個XAML元素綁定到這個屬性中TextElement顯示這一點,但它必須在XAML,而不是代碼,例如我想是這樣的:

<TextBlock Text="{Binding Appointment.Location}"/> 

什麼我需要做的讓這個工作?
它必須是Silverlight 3.0解決方案,因爲一些WPF功能不存在,比如我習慣使用的DynamicResource。


我想補充的是我的XAML正在從一個單獨的XAML文件加載,這可能是爲什麼約束力的例子似乎並不管用,因爲有不同的XAML文件相同的約會的一個因素。位置數據需要應用。

+0

看起來這裏的答案非常適合這個工作,它只是DataContext的一部分,它使它工作,因爲不知道如何到此爲止! – RoguePlanetoid 2009-09-01 15:38:09

+0

我將需要多個DataContexts綁定到幾個類,但應該能夠解決這個問題 - 將他們的目的放在一個類中綁定到XAML – RoguePlanetoid 2009-09-01 15:39:36

回答

3

您有兩種選擇。

如果「約會」類可用於控制或窗口被用作DataContext的,你可以這樣做:

<TextBlock Text="{Binding Location}" /> 

但是,如果「約會」是你當前的DataContext的屬性,你需要爲綁定一個更復雜的路徑:

<TextBlock Text="{Binding Path=Appointment.Location}" /> 

全部細節在MSDN下Binding Declarations page記錄。如果這些都不起作用,請確保您正確設置了DataContext。

+0

感謝這至少我現在有一些工作,習慣了DynamicResources,但這是更強大,也是我的XAML中一個整潔 – RoguePlanetoid 2009-09-01 15:37:25

0

如果我讀正確,你需要創建預約的情況下,控制的DataContext設置爲實例,並修改綁定,只是說:文本=「{結合位置}」

而且,請考慮在Appointment類上實現INotifyPropertyChanged以允許數據類通知用戶界面屬性值更改。

+0

這聽起來就像我需要的 - 如何將XAML中的DataContext設置爲類的實例? – RoguePlanetoid 2009-09-01 15:29:07

1

除非你想在資源中聲明一個Appointment的實例並綁定到這個實例,否則你需要代碼中的東西,但是我懷疑你想要什麼。

您需要的Text屬性綁定到屬性路徑「位置」,然後指定包含XAML的的DataContext到約會的一個實例: -

<Grid x:Name="LayoutRoot" Background="White"> 
    <TextBlock Text="{Binding Location}" /> 
</Grid> 

然後在控件的加載事件: -

void Page_Loaded(object sender, RoutedEventArgs e) 
{ 
    this.DataContext = new Appointment() { Location = "SomePlace" }; 
} 

請注意,在這種情況下,我使用的是默認的Page控件。

+0

實際上,這使我意識到一些,因爲我是在類Instanced之前分配DataContext,如果我在加載XAML後將Appointment類指定爲DataContext,它就可以工作! – RoguePlanetoid 2009-09-01 15:36:43

相關問題