2010-03-03 2 views
0

내부에 항목 목록이있는 ListBox가 Silverlight에 있습니다. 각 항목에는 일정 수의 추가 옵션이 있으며, 해당 옵션은 각 항목에 따라 다릅니다. ListBox의 OnDataItemBound()에 해당하는 Silverlight

<ListBox.ItemTemplate> 
     <DataTemplate> 
     <StackPanel Orientation="Horizontal">          
      <TextBlock Text="{Binding Name}" /> 
      <Button HorizontalAlignment="Right" x:Name="editDiarySecurityButton"> 
       <Image Source="/xxx.yyy.Silverlight.Common;Component/Resources/Images/Icons/Ribbon/Small/editSecurity.png" Width="16" Height="16" /> 
      </Button> 
     </StackPanel> 
     </DataTemplate>               
    </ListBox.ItemTemplate> 
</ListBox> 

됩니다 단추 editDiarySecurityButton

해당 항목 (일기를 나타내는)가 보안이 적용하거나하지 여부에 따라 처리해야합니다. 아마도 이것을 반영하기 위해 이미지의 불투명도를 수정했을 것입니다.

내 질문은 어떻게 이것을 할 수 있습니까? ASP.NET에서는 ItemDataItemBound 이벤트에 연결 했었지만 WPF/Silverlight에서는 사용할 수 없다고 생각합니다.

답변

1

불투명도 속성에 대해 특별히 묻기 때문에 Button의 불투명도 속성을 Double을 반환하는 DataContext의 속성에 바인딩하십시오. 해당 항목에 대해 원하는 불투명도를 반환하려면 속성에 필요한 논리를 추가하십시오. 이런 식으로 뭔가 : 당신의 DataContext에 그런

<Button HorizontalAlignment="Right" x:Name="editDiarySecurityButton" 
Opacity="{Binding Path=ButtonOpacity, Mode=OneWay}"> 
    <Image Source="/xxx.yyy.Silverlight.Common;Component/Resources/Images/Icons/Ribbon/Small/editSecurity.png" Width="16" Height="16" /> 
</Button> 

:

public double ButtonOpacity 
{ 
    get {return _buttonOpacity; } 
} 

사용을 제어 할 버튼의 다른 재산과 같은 생각.

+0

감사합니다. WPF 종달새가 나간다. 나는 결코 실제로 이런 식으로 생각하지 않았다. 가장 좋은 방법은 내 데이터를 하위 클래스로 만드는 것입니다. 내 수업이 EF/WCF의 DTO이기는하지만 필자는이 수업을 마무리해야 할지도 모릅니다. 불행히도, 나는 하나의 대답만을 선택할 수 있습니다! –

1

내가 묻는 바를 이해한다면, 객체에 속성을 노출하고이를 사용하여 필요에 따라 요소를 나타낼 수 있습니다. 즉, 버튼을 사용하지 않으려면 IsEnabled = "{HasLoadSecurity}"와 같은 것을 사용할 수 있습니다.

관련 문제