2010-01-22 8 views
0

종속성 속성에 문제가 있습니다. 전혀 일하고 싶지 않은 것 같아요. 왜 그런지 모르겠습니다. 내 종속성 속성의 값을 할당 할 경우 다음종속성 속성에 어떤 문제가 있습니까?

public static readonly DependencyProperty CheckBoxColumnVisibilityProperty = 
    DependencyProperty.Register("CheckBoxColumnVisibility", typeof(Visibility), typeof(ComputersControl), null); 

public Visibility CheckBoxColumnVisibility 
{ 
    get 
    { 
     return (Visibility)GetValue(CheckBoxColumnVisibilityProperty); 
    } 
    set 
    { 
     SetValue(CheckBoxColumnVisibilityProperty, value); 
    } 
} 

됩니다 : 여기

<ComputerControl:ComputersControl Canvas.Left="50" BorderBrush="Black" Background="Blue" Name="computerControl" CheckBoxColumnVisibility="Collapsed" /> 

을 나는 DataGrid의 열에 바인딩하려고 어디 여기 내 종속성 속성의 코드는 해당 열을 표시하거나 축소하도록 설정할 수 있습니다.

<Data:DataGrid.Columns> 
    <Data:DataGridTemplateColumn 
    x:Name="CheckBoxColumn" 
    Visibility="{Binding CheckBoxColumnVisibility}" 
    Header="Selected"> 
     <Data:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <CheckBox x:Name="DataGridCheckBox" 
      Click="DataGridCheckBox_Click" 
      IsChecked="{Binding IsSelected, Mode=TwoWay}" 
      HorizontalAlignment="Center" /> 
     </DataTemplate> 
     </Data:DataGridTemplateColumn.CellTemplate> 
    </Data:DataGridTemplateColumn> 

누군가 내 이유를 알 수 있습니까?

답변

1

을 나는이에 의존적 만들 때 DependencyPropertyMetaData을 사용할 수 있습니다 작동 할 수 있습니다 예입니다 내 사용자 정의 컨트롤 내의 종속성 속성 값에 바인딩하기 위해 PropertyChangedCallback을 호출하는 dencyProperty. 물론 이것은 여전히 ​​코드 안에 있지만 작동합니다.

1

Visibility="{Binding CheckBoxColumnVisibility ElementName=computerControl}"

SL3에이 비로소 작동을 시도 ... 내가 보는 모든 예는 다음과 정확히 같은 보이지만, 광산이 작동하지 않습니다 +

+1

DataGrid의 itemsource를 설정했습니다. 데이터 목록으로. 어쨌든 여전히 xaml의 해당 열에 CheckBoxVisibility 속성을 바인딩 할 수 있습니까? 나는 작동하도록 만들었지 만, Loaded 메소드의 컨트롤에 가시성을 설정해야했습니다. – Brett

0

당신은 여기에 실버 라이트 3에 바인딩 ElementName을 사용할 수 있습니다

<ComputerControl:ComputersControl Canvas.Left="50" BorderBrush="Black" Background="Blue" Name="computerControl" CheckBoxColumnVisibility="Collapsed" /> 

... 


<Data:DataGridTemplateColumn 
x:Name="CheckBoxColumn" 
Visibility="{Binding Path=CheckBoxColumnVisibility, ElementName=computerControl}" 
Header="Selected"> 
    <Data:DataGridTemplateColumn.CellTemplate> 
    <DataTemplate> 
     <CheckBox x:Name="DataGridCheckBox" 
     Click="DataGridCheckBox_Click" 
     IsChecked="{Binding IsSelected, Mode=TwoWay}" 
     HorizontalAlignment="Center" /> 
    </DataTemplate> 
    </Data:DataGridTemplateColumn.CellTemplate> 

+0

Datagrid가 computerControl 안에 있기 때문에 실제로 그 doesnt 일 ... – Brett

관련 문제