C# 绑定不适用于DataTemplate内的Grid.ColumnDefinitions
我有一个包含ItemsControl的DataTemplate,它反过来使用网格作为ItemsPanel。我想绑定此网格的列宽,但它根本不起作用:我尝试绑定的所有列的宽度都只有1*(我想这是默认值)。但是,我可以看到这些值在代码中发生了变化,所以问题在于绑定。有什么想法吗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
<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中的输出窗口。它可能会提醒您所定义的绑定无效。