Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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# 绑定不适用于DataTemplate内的Grid.ColumnDefinitions_C#_Wpf_Grid_Datatemplate_Itemscontrol - Fatal编程技术网

C# 绑定不适用于DataTemplate内的Grid.ColumnDefinitions

C# 绑定不适用于DataTemplate内的Grid.ColumnDefinitions,c#,wpf,grid,datatemplate,itemscontrol,C#,Wpf,Grid,Datatemplate,Itemscontrol,我有一个包含ItemsControl的DataTemplate,它反过来使用网格作为ItemsPanel。我想绑定此网格的列宽,但它根本不起作用:我尝试绑定的所有列的宽度都只有1*(我想这是默认值)。但是,我可以看到这些值在代码中发生了变化,所以问题在于绑定。有什么想法吗 <DataTemplate> <ItemsControl ItemsSource="{Binding DataContext.MySource, RelativeSource={RelativeSou

我有一个包含ItemsControl的DataTemplate,它反过来使用网格作为ItemsPanel。我想绑定此网格的列宽,但它根本不起作用:我尝试绑定的所有列的宽度都只有1*(我想这是默认值)。但是,我可以看到这些值在代码中发生了变化,所以问题在于绑定。有什么想法吗

<DataTemplate>
    <ItemsControl ItemsSource="{Binding DataContext.MySource, RelativeSource={RelativeSource AncestorType=Controls:MetroWindow}}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <Grid ShowGridLines="True">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="4*" />
                        <ColumnDefinition Width="{Binding LeftColumnWidth}" />
                        <ColumnDefinition Width="{Binding CenterColumnWidth}" />
                        <ColumnDefinition Width="{Binding RightColumnWidth}" />
                        <ColumnDefinition Width="2*" />
                    </Grid.ColumnDefinitions>
                </Grid>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
    </ItemsControl>
</DataTemplate>


ItemsPanel
影响物品的容器。不是每个单独的项目。想象一下,如果您的项目有不同的列宽,容器会选择哪种宽度?改为查看
ItemTemplates
。将网格定义放入DataTemplate也没有帮助,但现在我甚至看不到我的网格。看看,这使您能够在运行时查看datacontext等。这将向您显示正在监视的组件上的DataContext和绑定值,并帮助您修复绑定错误(如果有)。此外,如果您的值在代码中更改,并且没有反映在UI上,这是因为绑定模式应该是双向的,并且UpdateSourceTrigger应该是PropertyChanged。您的PropertyChanged事件是否在代码隐藏中触发?如果为null,则表示您的DataContext没有设置/设置错误。可能有一些问题导致了这种情况的发生。在
LeftColumnWidth
的getter中放置断点,视图是否正在尝试获取断点?此外,在调试时请注意VisualStudio中的输出窗口。它可能会提醒您所定义的绑定无效。