BindingDataGridColumnWidth我有两个datagrid,每个都有一列。第一:第二:第一列宽度与第二列宽度的绑定不起作用。如果我在代码中这样做:FilterTextCol01.Width=TextCol01.ActualWidth;作品。谁能告诉我为什么第一种方法不起作用?因为DataGrid列是抽象对象,所以它们不会出现在窗口的逻辑树或可视树中。您不能使用ElementName绑定它们的属性(这些绑定不需要名称范围)。您可以尝试使用Source和x:Reference,例如{BindingSource={x:ReferenceTextCol01},Path=ActualWidth}我正在寻找类似的东西。我找到了解决方案,所以我将其发布以帮助遇到同样问题的其他人。在我的实现中,我使用自定义DataTemplate作为DataGridTextColumn的标题!!因此,将Width="{BindingActualWidth,RelativeSource={RelativeSourceMode=TemplatedParent}}"分配给用作DataGridColumnHeader的TextBlock,我可以将其Width设置为DataGridTextColumn的ActualWidth正如HB所说,此属性不在逻辑树或可视树中。另请参阅此基于绑定代理的方法。源代码classBindingProxy:Freezable{//OverrideofFreezableprotectedoverrideFreezableCreateInstanceCore(){returnnewBindingProxy();}publicobjectData{get{return(object)GetValue(DataProperty);}set{SetValue(DataProperty,value);}}publicstaticreadonlyDependencyPropertyDataProperty=DependencyProperty.Register("Data",typeof(object),typeof(BindingProxy),newUIPropertyMetadata(null));}publicclassColumn:INotifyPropertyChanged{公共事件PropertyChangedEventHandlerPropertyChanged;protectedinternalvoidOnPropertyChanged(stringpropertyname){if(PropertyChanged!=null)PropertyChanged(this,newPropertyChangedEventArgs(propertyname));}publicDataGridLengthWidth{get{返回m_width;}设置{m_width=值;OnPropertyChanged("宽度");}}DataGridLengthm_width;}另请参考https://stackoverflow.com/a/46787502/5381620以上就是C#学习教程的全部内容:绑定datagrid列宽分享,如果对大家有用需要进一步了解C#学习教程,希望大家多多关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如有转载请注明出处:
