簡體   English   中英

從代碼隱藏將XAML屬性綁定到任意對象

[英]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;

最終,這在輸出窗口中沒有出現綁定錯誤,但實際上並沒有綁定任何內容。 這樣做的標准方法是什么?

這是各種各樣的錯誤,這里只是幾個指針:

  • 依賴項屬性是綁定的目標,而不是源。
  • 你在任何地方設置Obj嗎? 您設置的內容是否具有name屬性?

然后,了解FrameworkElement.DataContext和可實現的通知接口,以通知依賴項屬性有關數據源中的更改。 請參見其他人的代碼,例如ViewModel的外觀以及它們如何綁定到UI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM