gpt4 book ai didi

c# - 设置 d :DesignInstance in XAML for DataGridColumn

转载 作者:行者123 更新时间:2023-11-30 17:46:25 26 4
gpt4 key购买 nike

我有一个UserControl,其设计DataContext:

d:DataContext="{d:DesignInstance designtime:DesignViewModel, IsDesignTimeCreatable=True}"

它工作得很好。现在我有 DataGridItemsSource 绑定(bind)到一些具有特定类型的集合。

我的问题是 DataGridColumn。例如:

<DataGrid ItemsSource="{Binding OrderedPositions}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding PositionDefinitionId}" />

我想当我有 ItemsSource="{Binding OrderedPositions}" 时,很明显 PositionDefinitionIdPropertyItem OrderedPositions 集合。但事实并非如此。

现在我必须在每个 DataGridColumn 中显式设置 d:DesignInstance!但这不是一个好的解决方案:

<DataGridTextColumn Binding="{Binding PositionDefinitionId}"
d:DataContext="{d:DesignInstance system:Position,
IsDesignTimeCreatable=True}" />

其中 Position 是我 OrderedPositions 集合的特定类型。有没有办法解决这个问题?这样我就不必在每一列中显式设置 d:DataContext 了吗?

最佳答案

如果您为DataGridTextColumnCellTemplate 显式实现DataTemplate,那么您将能够定义设计时间实例,例如以下示例适用于 telerik GridViewDataColum(事实上它是一个 telerik 示例是无关紧要的):

<tel:GridViewDataColumn DataMemberBinding="{Binding Path=Code, Mode=OneWay}">
<tel:GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock d:DataContext="{d:DesignInstance ca:MessageViewModel}"
Text="{Binding Path=Code, Mode=OneWay}"
ToolTip="{Binding Path=CodeText, Mode=OneWay}">
</TextBlock>
</DataTemplate>
</tel:GridViewColumn.CellTemplate>
</tel:GridViewDataColumn>

关于c# - 设置 d :DesignInstance in XAML for DataGridColumn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26238241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com