WPF多值转换器未被调用

时间:2017-12-01 14:32:40

标签: c# wpf imultivalueconverter

我有一个数据网格,其宽度初始化为它在父网格中的行的宽度。列不填充网格中的所有空白空间,我想要的是每列具有相等的宽度。我的同事将datagrid的ColumnWidth属性设置为“*”,它应该可以工作(它可以在他创建的另一个应用程序中工作,但不能在他的计算机上打开我的解决方案,也不能在我的计算机上工作。)参见列的外观如图所示。enter image description here

我认为该属性对我也有用,但不是 - 每列的宽度只有一个字母宽。它与我绑定到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>

0 个答案:

没有答案