我繼承了一個使用WPF的遺留專案。我們使用的是Infragistics。 下面是一個虛擬的類結構:
public class DogsVM
{
public string ViewName { get; set; } = "My Dogs";
public List<Dog> Dogs { get; set; }
}
公用類 狗
{
public string DogName { get; set; }
公共字串 描述 { get; set; }
}
我正在使用一個XamDataGrid來顯示我的資料。
目前,XamDataGrid上的DataSource是DataSource="{Binding CollectionView}"。
當我輸出欄位時,我使用了下面的方法
<igDP: 欄位 Name="DogName" Label="Dog Name" AllowEdit="False" />
我想把Label改成DogsVM,并選擇欄位ViewName
如果我這樣做
<igDP: 欄位 Name="DogName" Label="{Binding ViewName}" AllowEdit="False" />
DogName被輸出,因為我正在看一個Dog物件,而不是一個DogsVM物件。我怎樣才能在標簽系結中找到父物件呢?
uj5u.com熱心網友回復:
所以你有一些物件,有一個名為CollectionView的屬性。該物件是XamDataGrid的DataContext。你應該給那個相同的物件添加一個字串屬性,該屬性具有你想用于該欄位標簽的值。然后使用FieldBinding來將欄位的屬性與該屬性系結。如果該物件是DogsVM類,而你只是不在那里顯示CollectionView,那么它將是類似于{FieldBinding ViewName}.
uj5u.com熱心網友回復:
XamDataGrid中的欄位在WPF中不是可視化元素,因此 不能直接系結到一個資料背景關系,因為他們沒有暴露一個 繼承自FrameworkElement。為了系結WPF中的非視覺元素的屬性,我們可以使用
XamDataGrid的非可視元素的屬性,如Field、FieldSettings或FieldLayoutSettings,我建議使用FieldSettings。 我建議使用FieldBinding。你可以閱讀關于FieldBindingXamDataGrid這里。 https://www.infragistics.com/help/wpf/xamdatagrid-binding-field-fieldlayout-to-mvvm。
因此,在Infragistics網站上建議使用FieldBinding標記擴展,以便將屬性系結到Field,FieldSettings,或FieldLayoutSettings。
雖然提到的帖子包括使用MVVM模式的例子,但FieldBinding標記擴展可以不使用它。
與上述問題相關的是考慮在建構式中設定DataContext:
public YouWindowConstructor()
{
InitializeComponent()。
DataContext = new DogsVM()。
}
現在為XamDataGrid設定DataSource并使用FieldBinding標記擴展:
。
<igDP: XamDataGrid DataSource="{Binding Path=Dogs}" AutoFit="True">/span>
<igDP:XamDataGrid.FieldLayoutSettings>/span>
...
<igDP:XamDataGrid.FieldLayouts> 。
<igDP:FieldLayout>
<igDP:FieldLayout.Fields>
...
<igDP:Field Name="DogName"/span> Label="{igDP: FieldBinding ViewName}" AllowEdit="False" />
...
</igDP:FieldLayout.Fields> 。
</igDP:FieldLayout>
</igDP:XamDataGrid.FieldLayouts>
</igDP:XamDataGrid>
請看類似的。https://stackoverflow.com/a/64545966/6630084
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/312733.html
標籤:
