Silverlight 4.0에서 XAML 바인딩을 사용하여 일부 ListBoxItem을 비활성화 할 수 있습니까?Silverlight 4.0 XAML 바인딩을 사용하는 일부 ListBoxItems 비활성화
나는 웹에서 어떤 해결책을 찾았지만, 감사 아무것도 Silvelight 4.0
와 함께 작동하지 않습니다이있다!
Pileggi
Silverlight 4.0에서 XAML 바인딩을 사용하여 일부 ListBoxItem을 비활성화 할 수 있습니까?Silverlight 4.0 XAML 바인딩을 사용하는 일부 ListBoxItems 비활성화
나는 웹에서 어떤 해결책을 찾았지만, 감사 아무것도 Silvelight 4.0
와 함께 작동하지 않습니다이있다!
Pileggi
바지, 바지! ... 적어도 솔루션을 찾았지만 힘들었습니다!
내 솔루션은 다음과 같습니다, 실버 DataTrigger에서 (와 WPF는 대조적으로 ...
<Style x:Key="modItemMainParts" TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ListBoxItem">
<Grid x:Name="g" Background="{TemplateBinding Background}">
...
<i:Interaction.Triggers>
<ei:DataTrigger Binding="{Binding abilitato}" Value="False">
<ei:ChangePropertyAction TargetObject="{Binding ElementName=g}" TargetName="IsHitTestVisible" Value="False" PropertyName="IsHitTestVisible"/>
<ei:ChangePropertyAction TargetObject="{Binding ElementName=g}" TargetName="Opacity" Value="0.5" PropertyName="Opacity"/>
</ei:DataTrigger>
</i:Interaction.Triggers>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
결론은 presonal하고 확실히 몇 가지 문제는 해결할 수 있지만, 그 ChangePropertyAction) 다른 곳에서 다음 템플릿 내부 컨트롤에 머물 수 없습니다. 그리고 ChangePropertyAction 객체의 TargetObject 속성은 템플릿 안의 컨트롤의 이름 만 연결하여 바인딩 할 수 있습니다. (TargetObject = "{Binding ElementName = g}")
이렇게 DataTrigger를 전체 항목 및 그것의 속성을 설정 IsEnabled하지만 우리는 모든 단일 컨트롤을 사용해야합니다, 그리고 우리는 항목이 비활성화되었을 때의 동작을 재현해야합니다. 특히 마우스 입력에 대한 책임을 회피하기 위해 모든 다른 컨트롤이 포함 된 주 격자의 IsHitTestVisible 속성을 False로 설정할 수 있습니다.
마지막으로 WPF에서는 훨씬 더 쉬웠지만 중요한 것은 무엇을 해야할지를 아는 것입니다.
동적 ListBox 또는 하드 코딩에 대해 이야기하고 있습니까? –