2013-06-01 41 views
1

是否可以从UserControl本身访问已定义的资源?怎么样?从自己访问UserControl的资源

我试图做到这一点:

<UserControl xmlns="all defined namespaces here..." 
      Visibility="{Binding Show,FallbackValue=Hidden, 
       Converter={StaticResource BooleanToVisibility}}"> 
    <UserControl.Resources> 
     <ResourceDictionary> 
      <BooleanToVisibilityConverter x:Key="BooleanToVisibility" /> 
     </ResourceDictionary> 
    </UserControl.Resources> 
</UserControl> 

,但我得到这个错误:

'Provide value on 'System.Windows.StaticResourceExtension' threw an exception.' Line number '11' and line position '9'.

回答

3

或许可以改变这个顺序:

<UserControl.Resources> 
    <ResourceDictionary> 
     <BooleanToVisibilityConverter x:Key="BooleanToVisibility" /> 
    </ResourceDictionary> 
</UserControl.Resources> 
<UserControl.Visibility> 
    <Binding Path="Show" FallbackValue="Hidden" 
      Converter="{StaticResource BooleanToVisibility}"/> 
</UserControl.Visibility> 

你也可以移动转换器到Application.Resources,因为它通常在多个地方使用,那么它可以在任何地方被引用。

+0

我是多么醉心:D非常感谢。完美的想法 –