[英]Get items from GridViewColumn or GridViewColumn.CellTemplate of GridView
[英]Get CellTemplate binding from GridViewColumn
所以,我有這個 ListView 需要根據綁定的內容使用一些自定義比較函數。 到目前為止,我找到的唯一解決方案是在使用 CellTemplates 綁定更復雜的對象(例如帶有圖標和文本的 object)時,使用自定義屬性來聲明( SortablePropertyName
)用作綁定源的內容。
...
<ui:MyListView Grid.Row="1" ItemsSource="{Binding SubComponents}" SelectionChanged="SubComponentSelectionChanged" SelectionMode="Extended" VirtualizingStackPanel.IsVirtualizing ="False" Margin="2" DefaultSortingColumnHeader="Label" Grid.ColumnSpan="2">
<ui:MyListView.View>
<GridView>
<ui:MyGridViewColumn Header="Solution" Width="200" SortBy="Context" SortablePropertyName="SolutionVisualizationViewModel">
<GridViewColumn.CellTemplate>
<DataTemplate>
<bcp:MyObjectVisualizationView DataContext="{Binding SolutionVisualizationViewModel}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</ui:MyGridViewColumn>
...
因為稍后在處理排序時,我需要有關已用於當前列的 ViewModel 的哪些屬性的信息。
foreach (MyGridViewColumn column in columns)
{
//Sort by context
if (column.SortBy == MyListViewSorting.SortOption.Context)
{
if (column.SortDirectionType == MyListViewSorting.SortDirectionType.Ascending)
{
listViewCollection.CustomSort = new ContextComparer(column.SortablePropertyName);
}
...
我可以通過添加DependencyObject data = column.CellTemplate.LoadContent() as DependencyObject;
掌握已使用的視圖,但仍然不是我想要的。
是否可以在不必使用屬性的情況下找出與列關聯的綁定 'DataContext="{Binding VisualizationViewModel}'?是否可以在綁定和 GridViewColumn 之間找到任何“鏈接”以有望解決此問題?
是否可以在不必使用屬性的情況下找出與列關聯的綁定 'DataContext="{Binding VisualizationViewModel}'?
您可以使用LoadContent()
方法實現模板並檢查其中根元素的DataContext
屬性。
或者,假設已經應用了模板,您可以使用GetCellContent
方法獲取對根元素的引用。
您還可以覆蓋GenerateElement
方法。
但是使用屬性可能更容易。
模板只是一個模板,沒有元素實例化,綁定應用和源值被解析,直到它被實際應用。 該列不關心/不知道它的CellTemplate
中有什么。 它只是實現模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.