当DataGridTemplateColumn的itemssource更改大小时,您可以将DataGrid列从DataGridTemplateColumn更改为DataGridTextColumn

时间:2013-03-12 19:46:49

标签: c# wpf datagrid

我有一个Dictionary,我用作DataGridTemplateColumn的ItemsSource来创建ComboBox,但有时特定的列没有任何可供选择的选项,我想改用DataGridTextColumn。

当列可以有选项供选择时,它应该显示。

<DataGridTemplateColumn Header="MyColumn">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock>
                <TextBlock.Text>
                    <MultiBinding StringFormat="{}{0}" Converter="{StaticResource DictionaryConverter}">
                        <Binding Path="MyDictionary" RelativeSource="{RelativeSource AncestorType={x:Type UserControl}}"/>
                        <Binding Path="MyItemID" />
                    </MultiBinding>
                </TextBlock.Text>
            </TextBlock>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <ComboBox ItemsSource="{Binding MyDictionary, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}" 
                SelectedValuePath="Key" DisplayMemberPath="Value"
                SelectedValue="{Binding MyItemID, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="True"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

当列没有可供选择的选项时,它应该显示。

<DataGridTextColumn IsReadOnly="True" Header="MyColumn" Binding="{Binding MyColumnInfo, RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}"/>

如果没有创建单独的列并在适当的时候隐藏/取消隐藏,有没有办法做到这一点?

示例:

如果形状定义为圆形没有角,那么我不应该显示一个下拉列表,让用户选择它们在形状上需要多少个角。

0 个答案:

没有答案