我有一个包含3列的数据网格。每列包含一个特定的用户控件(一个具有树视图,另外两个具有不同的列表视图)。
我的xaml代码
<DataGrid HeadersVisibility="None" AutoGenerateColumns="False" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<view:MethodsTreeView DataContext="{Binding MethodsTreeVM}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<view:VariablesListView DataContext="{Binding VariablesListVM}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
但是,它不起作用。 甚至不调用来自usercontrols的viewmodels的datacontexts 我知道我的主视图已正确连接到自己的datacontext,因为它适用于数据网格之外的项目。
我打开任何解决方案(包括不使用数据网格),但重要的是我有3列,并且我可以用鼠标调整宽度。
编辑: 我在Stackoverflow上找到了这个数据,添加了它,但它并没有改变任何东西:
<Grid.Resources>
<FrameworkElement x:Key="ProxyElement"
DataContext="{Binding}"/>
</Grid.Resources>
<DataGrid HeadersVisibility="None" AutoGenerateColumns="False" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
答案 0 :(得分:0)
对于要呈现的任何行,您必须将ItemsSource
的{{1}}属性设置为DataGrid
。
如果将其设置为IEnumerable
,返回1个IEnumerable<T>
类型的对象,则会得到一行,如果T
返回两个对象,则会在DataGrid中获得2行等等。
在XAML标记中提供IEnumerable<T>
和DataGrid
:
x:Name
然后在代码隐藏中设置其<DataGrid x:Name="dg" HeadersVisibility="None" AutoGenerateColumns ...>
属性:
ItemsSource
这应该为您提供一行,其中包含您在XAML标记中定义的两列。