2012-10-15 4 views
1

xamdatagrid에 bool 값을 바인딩하면 열이 자동으로 xamcheckeditor를 사용하여 데이터를 표시합니다. 바깥 쪽 버튼을 사용하여 checkbox 열의 allowedit을 제어하고 allowedit 속성을 변경하면 열의 체크 박스가 스타일 사용을 설정/해제합니다 (회색으로 바뀜). 내 리소스 사전에서 xamcheckeditor :xamcheckeditor 비활성화 스타일을 구현하는 방법

<ControlTemplate.Triggers> 
    <Trigger Property="IsReadOnly" Value="True"> 
     <Setter TargetName="PART_FocusSite" Property ="IsEnabled" Value="False" /> 
    </Trigger> 
</ControlTemplate.Triggers> 

필드를 편집 할 수없는 경우 확인란이 비활성화 됨으로 표시됩니다.

나는 또한 버튼을 클릭하세요 열의 allowedit을 제어 할 수있는 버튼이

, 그것은 호출합니다 : 자동으로 적용되지

grid.FieldsLayouts[0].Fields["Enabled"].Settings.AllowEdit = true/false 

을하지만/비활성화 작업을 활성화 난을 클릭해야 필터를 적용하여 적용되도록 새로 고치십시오 ...

제출 한 allowedit를 설정하려면 버튼을 클릭하여 구현해야하는 사항을 알려주십시오. 확인란이 자동으로 활성화됩니다.

감사합니다.

Enzhou

답변

3

당신이 원하는 모든 비활성화 경우/필드가 설정 AllowEdit있다 속한 경우 XamCheckEditor 수 있도록 참/거짓은 당신이 할 필요가 직접 연결된 바인딩과 스타일을 만드는 것입니다 AllowEdit.

<local:NullableBooleanConverter x:Key="converter"/> 

<Style TargetType="{x:Type igEditors:XamCheckEditor}" > 
    <Setter Property="IsEnabled" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type igDP:CellValuePresenter}}, 
     Path=Field.Settings.AllowEdit, Converter={StaticResource converter}}"/> 
</Style> 

XamCheckEditor는 Field의 각 셀 안에 있으므로 CellValuePresenter 안에 있음을 의미합니다. RelativeSource 바인딩을 사용하여 가져 와서 속성에 액세스 할 수 있습니다. 속성 중 하나는 속한 필드입니다. 따라서 AllowEdit에 직접 바인딩 할 수 있습니다.

이제 AllowEdit는 null이 기본값 인 nullable boolean (bool?)이므로 변환기를 사용하여 데이터가 XamCheckEditor에 올바르게 전달되도록해야합니다.

public class NullableBooleanConverter : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     // If value is null then we really mean true. 
     if (value == null) 
      return true; 

     // value is not null so it's either true or false. 
     return value; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

당신이 지금해야 할 일은 원래하고있는 것처럼 AllowEdit 속성을 설정하고 자동으로 XamCheckEditor을 업데이트합니다.