我有一个数据网格,其宽度初始化为它在父网格中的行的宽度。列不填充网格中的所有空白空间,我想要的是每列具有相等的宽度。我的同事将datagrid的ColumnWidth属性设置为“*”,它应该可以工作(它可以在他创建的另一个应用程序中工作,但不能在他的计算机上打开我的解决方案,也不能在我的计算机上工作。)参见列的外观如图所示。
我认为该属性对我也有用,但不是 - 每列的宽度只有一个字母宽。它与我绑定到Observable对象集合有什么关系吗?此外,由于我无法使ColumnWidth属性工作,我尝试创建一个多值转换器,它采用两个参数,数据网格的宽度和我拥有的列数。当我的视图加载时,我无法启动转换器。我之前使用了多重绑定转换器和布尔值,但同样没有使用Observable Collections。这可能是问题吗?任何帮助将不胜感激。
<DataGrid x:Name="DataGrid" Grid.Row="7" Grid.Column="3" AutoGenerateColumns="False" FontSize="18" ItemsSource="{Binding ObservableCollectionInViewModel}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path=PartNumber}" Header="Part Number">
<DataGridTextColumn.Width>
<MultiBinding Converter="{StaticResource DataGridEvenColumnConverter}">
<Binding Path="DataGridWidth"/> <!--{Binding ElementName=DataGrid, Path=Width}-->
<Binding Path="ColumnCount"/>
</MultiBinding>
</DataGridTextColumn.Width>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=SerialNumber}" Header="Serial Number">
<DataGridTextColumn.Width>
<MultiBinding Converter="{StaticResource DataGridEvenColumnConverter}">
<Binding Path="DataGridWidth"/>
<Binding Path="ColumnCount"/>
</MultiBinding>
</DataGridTextColumn.Width>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=Weight}" Header="Weight">
<DataGridTextColumn.Width>
<MultiBinding Converter="{StaticResource DataGridEvenColumnConverter}">
<Binding Path="DataGridWidth"/>
<Binding Path="ColumnCount"/>
</MultiBinding>
</DataGridTextColumn.Width>
</DataGridTextColumn>
<DataGridTextColumn Binding="{Binding Path=Quantity}" Header="Quantity">
<DataGridTextColumn.Width>
<MultiBinding Converter="{StaticResource DataGridEvenColumnConverter}">
<Binding Path="DataGridWidth"/>
<Binding Path="ColumnCount"/>
</MultiBinding>
</DataGridTextColumn.Width>
</DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>