2009-12-11 87 views
1

我有一个ListBox的模板。在ListBox中,我在ListBoxItems上有一个模板。我想要禁用这些项目中的一部分(我仍在处理我想用来制作“事件”的消息,因此我现在只是放入IsSelected)wpf - 模板 - 传递模板项目作为ConverterParameter

我的问题是我需要获取ListBoxItem的一些数据知道它是否应该被禁用或不(也就是我们现在正在查看哪一个...)

我以为我会使用ConverterProperty,但它似乎只允许资源和硬编码值(我不能用反射来禁止数据绑定,我不想这样做)。

我试着传入RelativeSource Self和ConverterParameter,并且只传入了一个不会转换为ListBoxItem的RelativeSource类型的对象。

任何想法?

<Style x:Key="CheckBoxListStyle" TargetType="ListBox"> 
    <Style.Resources> 
     <Style TargetType="ListBoxItem"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding IsSelected, 
        RelativeSource={RelativeSource Self}, 
        Converter={StaticResource DisableWorkItemConverter}, 
        ConverterParameter={RelativeSource Self}}" Value="True"> 

        <Setter Property="IsEnabled" Value="False"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Style.Resources> 
</Style> 

回答

3

使用多重绑定而不是您的绑定,那么您可以绑定到多个参数。

ms doco on multibinding

+0

谢谢。这很好用! – Vaccano 2009-12-11 03:28:46

+0

其有趣的,我做了这个几次(试图绑定一个转换器参数)之前记住多绑定:) – 2009-12-11 05:13:54