2014-03-31 3 views
3

저는 프로그래밍 초보자입니다. 나는 "if-else-condition"을 포함 시켜서 나의 Checkbox를 관리하고 싶다. 예를 들어, "읽기 가능"및 "쓰기 가능"(공용 bool)이라는 두 개의 열이 있습니다. 이 두 열에 대해서는 CheckBox를 사용합니다.XAML에서 CheckBox를 관리하는 방법은 무엇입니까?

1) 읽기/쓰기 가능 값이 false 인 경우 CheckBox는 "읽기 전용"이됩니다.

2) CheckBox는 읽기/쓰기 가능 값이 true 인 경우 사용자가 편집 할 수 있습니다.

예를 들어 아래 코드에서 어떻게 편집 할 수 있습니까? (내 데이터 바인딩을했다고 가정)

<sf:GridTreeColumn MappingName="Readable" PercentWidth="2"> 
    <sf:GridTreeColumn.StyleInfo> 
     <sf:GridStyleInfo CellType="CheckBox" HorizontalAlignment="Center" IsThreeState="False"/> 
    </sf:GridTreeColumn.StyleInfo> 
</sf:GridTreeColumn> 
<sf:GridTreeColumn MappingName="Writable" PercentWidth="2"> 
    <sf:GridTreeColumn.StyleInfo> 
     <sf:GridStyleInfo CellType="CheckBox" HorizontalAlignment="Center" IsThreeState="False"/> 
    </sf:GridTreeColumn.StyleInfo> 
</sf:GridTreeColumn> 

내 질문을 읽고 나를 도와 주려고하는 모든 사람들에게 진심으로 감사드립니다. =)

+0

안녕하세요, 제 3 부분 컨트롤을 사용하고 있습니까 ?? 당신 syncfusion 컨트롤을 사용하는 것 같아 –

+0

기본 데이터가 무엇입니까? StyleInfo의 DataContext는 무엇입니까? –

+0

Nope. 제 3 자 컨트롤을 사용하지 않습니다. 사실 지금 내 CellType에 DataBoundTemplate을 사용하면 해결 될 것이라고 생각하고 있습니다. 그런 다음 내 CheckBox의 "IsEnabled"및 "IsChecked"속성에 데이터 바인딩을 수행합니다. – user3481276

답변

2

는 Syncfusion를 사용하는 경우는 속성이 syncfusion.GridCommon.wpf에서 그것을 얻을이 제어합니다. 당신의 열 안에 체크 박스를 설정하는 것은

<sf:GridTreeColumn MappingName="Readable" PercentWidth="2"> 
<sf:GridTreeColumn.StyleInfo> 
    <sf:GridStyleInfo CellType="CheckBox" gridCommon:VisualContainer.WantsMouseInput=true HorizontalAlignment="Center" IsThreeState="False"/> 
</sf:GridTreeColumn.StyleInfo> 

이보십시오!

+0

"gridCommon : VisualContainer.WantsMouseInput"의 의미는 무엇입니까? – user3481276

+0

GridTree에 syncfusion (타사) 컨트롤을 사용하고 있습니까 ?? –

+0

알겠습니다 .. Syncfusion은 제 3자를 의미합니다. 네, Syncfusion을 내 참조에 추가하고 내 xaml 코드에 사용했습니다. 미안 해요. 현재 학생이고, 아직 새로운 학생입니다. = ( – user3481276

1

이 쉽게 convertes를 사용함으로써 달성 될 수있다 :

<UserControl.Resources> 
    <converter:BoolToVisibilityConverter x:Key="BoolToVisibilityConverter" /> 
</UserControl.Resources> 

<sf:GridTreeColumn MappingName="Readable" PercentWidth="2"> 
<sf:GridTreeColumn.StyleInfo> 
    <sf:GridStyleInfo CellType="CheckBox" HorizontalAlignment="Center" 
IsThreeState="False" IsEnabled="{Binding Readable, Converter={StaticResource 
BoolToVisibilityConverter}}"/> 
</sf:GridTreeColumn.StyleInfo> 
</sf:GridTreeColumn> 
<sf:GridTreeColumn MappingName="Writable" PercentWidth="2"> 
<sf:GridTreeColumn.StyleInfo> 
<sf:GridStyleInfo CellType="CheckBox" HorizontalAlignment="Center" 

IsThreeState="False" IsEnabled="{Binding Writable, Converter={StaticResource 
BoolToVisibilityConverter}}"/> 
</sf:GridTreeColumn.StyleInfo> 
</sf:GridTreeColumn> 

희망이 도움이 :

public sealed class BoolToVisibilityConverter : IValueConverter 
{ 
    #region Methods 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 

     bool boolValue = false; 

     if (!bool.TryParse(System.Convert.ToString(value), out boolValue)) 
     { 
      boolValue = false; 
     } 

     if (boolValue) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 


    #endregion 


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

XAML 코드는 XAML 코드를 프로젝트에이 클래스를 추가하고 포함 .

+0

안녕하세요, Praveena, 변환기에 대한 아이디어가 멋지 네요. , "IsEnabled가 인식되지 않거나 액세스 할 수 없습니다."아마도 뭔가 놓칠 수 있습니까? – user3481276

+0

" 'IsEnabled'속성이 'GridStyleInfo'유형에서 발견되지 않았습니다." – user3481276

+0

안녕하세요, 동기화 융합 컨트롤에 익숙하지 않습니다. 컨트롤에 대해 IsEnabled와 동일한 기능이 무엇인지 파악하고 대신 사용하십시오. 그것이 당신을 위해 작동하는지 알려주세요. – Praveena

1

이 질문에 직접 답하는 것은 아니지만 버튼 클릭시 확인란을 활성화 및 비활성화하면 확인란을 읽기 전용 또는 읽기/쓰기로 설정할 수 있습니다.

(참고 :)이 간단하면서도 효과적인 개념은 이벤트로드 또는 사용자 인증, 응용 프로그램에서 특정 콘텐츠를 사용 중지하거나 사용 설정하는 데 사용할 수 있으며 이후에 유용 할 수 있습니다.

 private void btnEnable_Click(object sender, RoutedEventArgs e) 
     { 
      checkBox.IsEnabled = true; 
     } 

     private void btnDisable_Click(object sender, RoutedEventArgs e) 
     { 
      checkBox.IsEnabled = false; 
     } 
+0

컨셉을 가져 주셔서 감사합니다! =) – user3481276

관련 문제