for*_*uce 3 c# data-binding wpf datagrid blend
我有一个源自的ObservableCollection<SolarSystemViewModel>地方.当我绑定到我的数据网格时,暴露和显示在数据网格中.默认情况下,如何在数据网格中隐藏这些列,而不必使用Blend生成XAML,然后手动禁用这些列?SolarSystemViewModelViewModelBaseViewModelBaseIsInDesignModeIsInDesignModeStaticObservableCollection
谢谢.
例:

Tar*_*ara 15
我一直在寻找这个问题的答案.这是一个非常好的解决方案:
像这样绑定DataGrid的属性"OnAutoGeneratingColumn"(注意XAML不是100%完成):
<DataGrid AutoGeneratingColumn="OnAutoGeneratingColumn" />
Run Code Online (Sandbox Code Playgroud)
在您的CodeBehind中:
private void OnAutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
PropertyDescriptor propertyDescriptor = (PropertyDescriptor)e.PropertyDescriptor;
e.Column.Header = propertyDescriptor.DisplayName;
if (propertyDescriptor.DisplayName == "IsInDesignMode")
{
e.Cancel = true;
}
}
Run Code Online (Sandbox Code Playgroud)
"e.Cancel = true;" 将阻止生成当前列.这就是您可以轻松地从DataGrid中排除列的方法.
请尝试手动定义列......类似的东西。
<dg:DataGrid x:Name="myDataGrid" ItemsSource="{Binding Path = SolarSystemViewModels}" AutoGenerateColumns="False">
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Binding="{Binding FactionKills}" Header="Faction Kills" />
<dg:DataGridTextColumn Binding="{Binding Jumps}" Header="Jumps" />
<dg:DataGridTextColumn Binding="{Binding PodKills}" Header="Pod Kills" />
<dg:DataGridTextColumn Binding="{Binding ShipKills}" Header="Ship Kills" />
</dg:DataGrid.Columns>
</dg:DataGrid>
Run Code Online (Sandbox Code Playgroud)
您不必为此使用 Blend,只需使用 VS XAML 编辑器
| 归档时间: |
|
| 查看次数: |
5117 次 |
| 最近记录: |