XceedGrid.Как сделать ячейку редактируемой, связанной с другим столбцом (только чтение) - PullRequest
0 голосов
/ 28 марта 2011

У меня есть логическое свойство SpecValue, которое указывает, что другое свойство может быть изменено.

Я не могу найти хорошее решение, как это сделать.

Я использую следующее решение, но есть некоторыеошибки.

<xcdg:Column Title="Value" FieldName="Value"  Width="100" MaxWidth="100" MinWidth="100">    
<xcdg:Column.CellEditor>
    <xcdg:CellEditor>
        <xcdg:CellEditor.EditTemplate>
            <DataTemplate>
                <TextBox x:Name="txtSpecVal" Text="{xcdgg:CellEditorBinding}" IsReadOnly="False"/>
                <DataTemplate.Triggers>
                    <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type xcdg:Row}},Path=DataContext.SpecificValue}" Value="False">
                        <Setter TargetName="txtSpecVal" Property="IsReadOnly" Value="True"/>
                        <Setter TargetName="txtSpecVal" Property="BorderBrush" Value="Transparent"/>
                    </DataTrigger>
                </DataTemplate.Triggers>
            </DataTemplate>
        </xcdg:CellEditor.EditTemplate>
    </xcdg:CellEditor>
</xcdg:Column.CellEditor>

1 Ответ

1 голос
/ 19 октября 2011

Это должно сработать. Это пример стиля, который нацелен на DataCell и устанавливает для свойства enabled ячейки SpecificValue значение false, когда его собственное значение равно false. Это должно помочь вам начать.

    <Style.Triggers >

        <MultiDataTrigger>

          <MultiDataTrigger.Conditions>

              <Condition Binding="{Binding RelativeSource={RelativeSource self}, 
                                                        Path=ParentColumn.FieldName}"
                          Value="SpecificValue"/>

              <Condition Binding="{Binding
                                                        RelativeSource={RelativeSource self}, 
                                                        Path=ParentRow.DataContext.SpecificValue}" 
                          Value="false"/>

          </MultiDataTrigger.Conditions>

          <Setter Property="Background" Value="Green" />
          <Setter Property="IsEnabled" Value="False" />
        </MultiDataTrigger>
    </Style.Triggers>
  </Style>

Вы также можете обратиться к следующему сообщению в блоге за похожим подробным примером: http://xceed.com/CS/blogs/techside/archive/2011/07/06/datacell-styling-vs-cellcontenttemplate.aspx

...