2013-06-06 85 views
0
<Window.Resources> 
    <ResourceDictionary>    
     <Style TargetType="{x:Type propgrid:PropertyGridDataAccessorItem}"> 
      <Style.Triggers> 
       <Trigger Property="DataAccessorType" Value="Category"> 
        <Setter Property="IsExpanded" Value="{Binding DisplayName, RelativeSource={x:Static RelativeSource.Self}, ConverterParameter=???, Converter={local:ExpandedCategoryConverter}}"/> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ResourceDictionary> 
</Window.Resources> 

问题是我不知道如何从我的ViewModel作为ConverterParameter发送一个属性。我想有一些像ConverterParameter =“{Binding MyValue}”,但它是不可能的。我试过这样的Multibinding:设置ConverterParameter风格

<Trigger Property="DataAccessorType" Value="Category"> 
    <Setter Property="IsExpanded"> 
     <Setter.Value> 
      <MultiBinding Converter="{local:ExpandedCategoryConverter}"> 
       <Binding Path="DisplayName"/> 
       <Binding Path="MyProperty"/> 
      </MultiBinding> 
     </Setter.Value> 
    </Setter> 
</Trigger> 

但我的属性总是为空。

任何人知道如何处理这个问题呢?

日Thnx提前

+0

是否有在VS输出窗口任何约束力的错误消息?至少在单个绑定中,您正在设置'RelativeSource',但在MultiBinding中不这样做。 – Clemens

+0

在我的转换器类在调试模式我得到DisplayName罚款,但ExpandCategory是 - unset({DependencyProperty.UnsetValue})。 任何想法如何解决它? – Sasha

+0

什么是ExpandCategory?在你的问题中找不到。是否有绑定错误信息或不?运行应用程序时,请查看Visual Studio中的输出窗口。 – Clemens

回答

0

你得到DependencyProperty.UnsetValueMyProperty(或ExpandCategory),因为结合不产生价值。该IMultiValueConverter.Convert方法的values参数的MSDN文档说:

,在MultiBinding 源绑定产生的值的数组。值UnsetValue指示源结合具有 没有值,以提供转换。

你必须确保<Binding Path="MyProperty"/>作品。我想你没有正确设置绑定的来源。

+0

日Thnx您的帮助,我发现它有这样一行:的RelativeSource =“{的RelativeSource模式= FindAncestor,AncestorType =窗口}” – Sasha