C# 使用静态列和用户控件设置datagrid
我有一个3列的数据网格。每列包含一个特定的usercontrol(一个有一个treeview,另外两个有不同的ListView) 我的xaml代码C# 使用静态列和用户控件设置datagrid,c#,wpf,xaml,datagrid,user-controls,C#,Wpf,Xaml,Datagrid,User Controls,我有一个3列的数据网格。每列包含一个特定的usercontrol(一个有一个treeview,另外两个有不同的ListView) 我的xaml代码 <DataGrid HeadersVisibility="None" AutoGenerateColumns="False" Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <DataGrid.Columns>
<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中的DataContext
我知道我的主视图正确地连接到它自己的datacontext,因为它适用于datagrid之外的项目
我接受任何解决方案(包括不使用datagrid),但重要的是我有3列,并且我可以用鼠标调整这些列的宽度
编辑:
我在Stackoverflow上找到了这个数据,添加了它,但它没有改变任何东西:
<Grid.Resources>
<FrameworkElement x:Key="ProxyElement"
DataContext="{Binding}"/>
</Grid.Resources>
对于要渲染的任何行,必须将
DataGrid
的ItemsSource
属性设置为IEnumerable
如果将其设置为返回1个类型为T
的对象的IEnumerable
,则会得到一行,如果IEnumerable
返回两个对象,则会在数据网格中得到2行,依此类推
在XAML标记中指定DataGrid
和x:Name
:
<DataGrid x:Name="dg" HeadersVisibility="None" AutoGenerateColumns ...>
这将得到一行,其中包含在XAML标记中定义的两列
<DataGrid x:Name="dg" HeadersVisibility="None" AutoGenerateColumns ...>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
dg.ItemsSource = Enumerable.Range(0, 1); //returns an IEnumerable<int> with a single int -> one row will be rendered
}
}