Silverlight 4.0使用XAML绑定禁用某些ListBoxItems

Silverlight 4.0使用XAML绑定禁用某些ListBoxItems,silverlight,data-binding,silverlight-4.0,listbox,Silverlight,Data Binding,Silverlight 4.0,Listbox,在Silverlight 4.0中,是否可以使用XAML绑定禁用某些ListBoxItems 我在网络上找到了一些解决方案,但没有一个能与Silvelight 4.0配合使用 谢谢大家! 皮莱吉裤子,裤子。。。至少我找到了解决办法,但很难 我的解决办法是: <Style x:Key="modItemMainParts" TargetType="ListBoxItem"> <Setter Property="Template"> <Setter

在Silverlight 4.0中,是否可以使用XAML绑定禁用某些ListBoxItems

我在网络上找到了一些解决方案,但没有一个能与Silvelight 4.0配合使用

谢谢大家!


皮莱吉

裤子,裤子。。。至少我找到了解决办法,但很难

我的解决办法是:

<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>

...
这些结论是个人的,当然有些问题是可以解决的,但是

  • 与WPF相反,在Silverlight中,DataTrigger(及其ChangePropertyAction)不能停留在模板内控件的其他位置。而ChangePropertyAction对象的属性TargetObject只能通过链接模板内控件的名称进行绑定(TargetObject=“{Binding ElementName=g}”)

  • 因此,不可能将DataTrigger与整个项绑定,也不可能将其属性设置为IsEnabled,但我们需要处理每个控件,并且需要在禁用项时重现该项的行为。特别是,我们可以将包含其他控件的主网格的属性ishitsetvisible设置为False,以避免它负责鼠标输入


最后,在WPF中,它非常简单,但重要的是知道该做什么。

您是在谈论动态列表框还是硬编码?