【问题标题】:Disabling a CellEditingTemplate programmatically in in a Silverlight DataGrid在 Silverlight DataGrid 中以编程方式禁用 CellEditingTemplate
【发布时间】:2010-06-01 08:47:42
【问题描述】:

我有一个 Silverlight Datagrid,我想以编程方式将某些单元格设为只读。 具体来说,我有一个 CellEditingTemplate,我想根据 CategoryTypeName 的值关闭或打开单元格编辑(参见下面的 xmal)。

               <local:DataGridTemplateColumn Header="Category" >
                    <local:DataGridTemplateColumn.CellTemplate>
                        <DataTemplate>
                            <TextBlock Text="{Binding CategoryTypeName}"/>
                        </DataTemplate>
                    </local:DataGridTemplateColumn.CellTemplate>
                    <local:DataGridTemplateColumn.CellEditingTemplate>
                        <DataTemplate>
                                <ComboBox 
                                  Width="90"
                                  x:Name="CategoryCombo"
                                  ItemsSource="{Binding CategoryTypes}"
                                  DisplayMemberPath="Name"
                                  SelectionChanged="CategoryCombo_SelectionChanged"
                                  />
                        </DataTemplate>
                    </local:DataGridTemplateColumn.CellEditingTemplate>
                </local:DataGridTemplateColumn>

有没有办法做到这一点?

非常感谢任何帮助。

提前致谢。

【问题讨论】:

    标签: silverlight datagrid celleditingtemplate


    【解决方案1】:

    一种方法是让两个控件在您的CellEditingTemplate 中相互重叠,并且只显示您需要的那个。像这样的

    <local:DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <Grid>
                <ComboBox Visibility="{Binding CategoryTypeName, Converter={StaticResource ConverterToDecideIfItShouldBeEditable}}"
                          Width="90" x:Name="CategoryCombo"
                          ItemsSource="{Binding CategoryTypes}"
                          DisplayMemberPath="Name"
                          SelectionChanged="CategoryCombo_SelectionChanged" />
                <TextBox Text="{Binding CategoryTypeName}"  
                         Visibility="{Binding CategoryTypeName, Converter={StaticResource ConverterToDecideIfItShouldBeEditable},ConverterParameter=Inverse}"/>
            </Grid>
        </DataTemplate>
    </local:DataGridTemplateColumn.CellEditingTemplate>
    

    关键是转换器。第二个文本框将 ConverterParameter 提供为“Inverse”,转换器使用它来返回相反的值。使用它,您可以让转换器为其中一个控件返回 Visibility.Visible,为另一个控件返回 Visibility.Collapsed

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-27
      • 2011-10-19
      • 1970-01-01
      • 2011-02-02
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多