簡體   English   中英

將對象屬性綁定到 WPF 中的數據網格

[英]Bind object properties to a datagrid in WPF

我有以下課程:

public class Sp3dItem
{
    public Sp3dItem()
    {
        Items= new ObservableCollection<Sp3dItem>();
    }

    public string OID
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }

    public string Type
    {
        get;
        set;
    }

    public ObservableCollection<Sp3dItem> Items
    {
        get;
        set;
    }
}

我需要向 Datagrid(或任何其他類型的網格)顯示此對象實例的屬性。 就像 Visual Studio 中的屬性窗口一樣。 但是有一些我不在乎的屬性,比如“項目”,我只需要顯示字符串類型的屬性,並且只需要顯示非空值的屬性(最后一個是加分項,不是真正的需要)。

問題是,我可以通過綁定來做這樣的事情還是我必須手動組裝網格上的數據?

聽起來您想要一個屬性網格來查看單個對象實例的屬性,其中每個屬性/值對都是一個“行”,是嗎? 如果是這種情況,請查看一些第三方屬性網格控件。 WPF 擴展工具包有一個免費的。

通常,這些網格可以自動發現目標對象的屬性,您可以選擇通過使用[Browsable(false)]裝飾它們來隱藏某些屬性。

是的...一旦您弄清楚內置綁定向導的工作原理,就可以輕松實現。

這個例子是針對一個

<Label...
  1. 在視圖中為您的視圖模型創建一個靜態實例。 通過這樣做,一旦您開始“連接綁定”,設計器將在屬性頁面中顯示 Viewmodel 的屬性......
//in code behind
public static string Error
{
  get { return _Error; }
  set { _Error = value; }
}

現在只需在設計器中單擊 XMAL 組件一次。

   <Label Grid.Row="2"  <=Click here one time
  1. 在屬性頁面,點擊圖標(屬性最右側的小方塊)開始綁定過程

屬性頁

  1. 選擇“創建數據綁定”

在此處輸入圖片說明

  1. 選擇“FindAncestor”,然后選擇感興趣的 MainWindow,最后選擇靜態屬性。

尋找祖先

  1. 單擊確定,綁定將在 XAML 中自動設置。
 <Label Grid.Row="2" 
   Content="{
    Binding Error, 
    RelativeSource={
     RelativeSource FindAncestor, 
     AncestorType={x:Type local:MainWindow}}}"/>

上面的冗長只是說:

  • 在 MainWindow 的靜態屬性中查看 Error。
  • 使這個標簽的內容具有價值。

如果需要,您還可以編輯 Datagrid 的模板,但這與您的問題無關。

暫無
暫無

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

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