Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用静态列和用户控件设置datagrid_C#_Wpf_Xaml_Datagrid_User Controls - Fatal编程技术网

C# 使用静态列和用户控件设置datagrid

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>

我有一个3列的数据网格。每列包含一个特定的usercontrol(一个有一个treeview,另外两个有不同的ListView)

我的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中的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
    }
}