2017-06-27 84 views
0

我創建了一個UserControl,其中的一切都在UserControl.xaml.cs中完成,我希望UserControl的特定屬性(稱爲「Value」)傳遞給TextBlock,它是在MainPage中創建。爲了測試該屬性的訪問權限,我在UserControl中創建了一個TextBlock,並通過Text={Binding Path=Value}將它綁定到「Value」,並且它工作正常。我如何從MainPage中綁定TextBlock以實現相同?UWP:將UserControl的值傳遞給MainPage

+0

是否要綁定'UserControl'中的'Value'屬性到MainPage中的'TextBlock'?如果是,那麼使用'Text = {x:Bind UserControl.Value}' –

+0

似乎這是要走的路,但似乎我在某處丟失數據上下文,因爲我得到此錯誤'無法解析字段或屬性UserControl '在類型'MyProject.TestApplication.MainPage'的數據上下文中 –

+0

您是否創建了'Value'作爲DependencyProperty? –

回答

1

您可能可以使用Binding的ElementName部分訪問UserControl中的值。要做到這一點,你必須給你的用戶控件的x:Name然後設置綁定像這樣:

Text="{Binding Value, ElementName=MyUserControl}" 
+0

這個!完美的作品,謝謝! –

1

確保您已經創建了房產作爲一個DependencyProperty。使用x:Bind,因爲它是:你可以使用下面的代碼

public string Value 
{ 
    get { return (string)GetValue(ValueProperty); } 
    set { SetValue(ValueProperty, value); } 
} 

public static readonly DependencyProperty ValueProperty = 
    DependencyProperty.Register("Value", typeof(string), typeof(UserControl), new PropertyMetadata("")); 

您可以使用下面的代碼

<TextBlock Text="{Binding ElementName=UserControl, Path=Value}"/> 

(OR)

<TextBlock Text="{x:Bind CustomInkControl.Value, Mode=OneWay}"/> 

注獲得XAML值做效率高於Binding

+0

是的,雖然我艾雷迪有我的財產作爲DependencyProperty,我錯過了ElementName。所以謝謝你和@ jsmyth886! –

+1

@ Nigel-Lee您也可以使用'x:Bind'並設置'Mode = OneWay'。我已經更新了答案。 –