1

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>

これを行う方法はありますか?

どんな助けでも大歓迎です。

前もって感謝します。

4

1 に答える 1

2

これを行う 1 つの方法は、2 つのコントロールを互いにオーバーラップさせ、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>

その鍵となるのがコンバーターです。2 番目のテキストボックスは、コンバーターが反対の値を返すために使用する「Inverse」として ConverterParameter を提供します。Visibility.Visibleこれを使用すると、一方のコントロールともう一方のコントロールに対してコンバーターを返すことができますVisibility.Collapsed

于 2010-06-01T12:52:32.383 に答える