[英]Bind XAML property to arbitrary object from codebehind
我覺得這應該很容易,但是我花了最后幾個小時嘗試解決此問題,但似乎沒有任何效果。
我在XAML代碼中有一個對象,並且想要將其屬性之一綁定到在c#代碼背后創建的對象。 到目前為止,這是我的策略:
<setpwindows:ScalingWindow
...
>
<setpwindows:ScalingWindow.Resources>
<localwpf:ObjectProvider x:Key="locationProvider"/>
</setpwindows:ScalingWindow.Resources>
...
...
<DataGridTextColumn
Header="Code Out"
Binding="{Binding Source={StaticResource locationProvider}, Path=Obj.Name}"
/>
...
...
</setpwindows:ScalingWindow>
使用ObjectProvider如下:
class ObjectProvider : DependencyObject
{
private object _obj;
public object Obj
{
get { System.Diagnostics.Debug.WriteLine("Got object as " + _obj); return _obj; }
set { _obj = value; System.Diagnostics.Debug.WriteLine("Set object to " + _obj); }
}
public static readonly DependencyProperty ObjProperty = DependencyProperty.Register("Obj", typeof(object), typeof(ObjectProvider));
public ObjectProvider() {}
}
窗口初始化后,我將Obj設置如下:
WPFObjects.ObjectProvider locProv = this.FindResource("locationProvider") as WPFObjects.ObjectProvider;
locProv.Obj = _tempLocation;
最終,這在輸出窗口中沒有出現綁定錯誤,但實際上並沒有綁定任何內容。 這樣做的標准方法是什么?
這是各種各樣的錯誤,這里只是幾個指針:
然后,了解FrameworkElement.DataContext和可實現的通知接口,以通知依賴項屬性有關數據源中的更改。 請參見其他人的代碼,例如ViewModel的外觀以及它們如何綁定到UI。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.