我有一个DataGrid的视图模型,如下所示:
public class Cell
{
public CellValue CellValue { get; }
}
CellValue属性可以有几种类型:
public class CellValue
{
public double Value { get; }
}
public class TwoValueCell : CellValue
{
public double Value2 { get; }
}
DataGrid将ItemsSource绑定到我的行和单元格列表。
DataGrid按预期绑定数据:我在每个DataGridCell中获得一个Cell。所以我在这样的资源中有一种风格(现在的本地资源):
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridCell}">
<ContentPresenter x:Name="ContentHost"
Margin="{TemplateBinding Padding}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<DataTemplate DataType="{x:Type viewModel:Cell}">
<Grid>
<TextBlock Text="{Binding CellValue}"/>
</Grid>
</DataTemplate>
</DataGrid.Resources>
我喜欢将模板绑定到视图模型类型...
问题是:而不是TextBlock上的Binding,我想在那里膨胀另一个DataTemplate,我可以通过特定的CellValue类型再次定义。
换句话说,在psudocode中它可能如下所示:
<DataTemplate DataType="{x:Type viewModel:Cell}">
<Grid>
<DataTemplate DataType="{x:Type viewModel:CellValue}">
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
</Grid>
</DataTemplate>
但我需要在某处定义特定的CellValue数据模板......
底线是DataGridCell有一个Type--并且有一个该类型的数据模板---但是在单元格的属性上有几个特定的类型,我想基于定义自定义数据模板关于物业的实际类型。
任何帮助?
答案 0 :(得分:1)
您可以使用ContentControl。
QuickSort