我的UserControl
上有几个使用相同可见性绑定的控件:
<UserControl x:Class="Whatever.MyClass"
x:Name ="TheUserControlName"
DataContext="MyUserControlViewModel">
<Label x:Name="MyLabel"
Visibility="{Binding SomeBoolean,
ConverterParameter={StaticResource BooleanToVisibilityConverter},
Converter={StaticResource BooleanValueInverter}}"
Style="{StaticResource LeftLabel}"
Content="Template _Name"
Target="{Binding ElementName=SomeTextBox}" />
</UserControl>
我尝试将绑定添加到UserControl.Resources
字典:
<Binding x:Key="IsCourseVisibilityBinding"
Path="Thing.SomeBoolean"
ConverterParameter="{StaticResource BooleanToVisibilityConverter}"
Converter="{StaticResource BooleanValueInverter}" />
......我收到错误:
A&#39;绑定&#39;无法设置&#39;值&#39;属性类型 &#39;的DictionaryEntry&#39 ;. A&#39;绑定&#39;只能设置为 DependencyObject`的
...但随后我发现可能我应该在资源字典中加上Visibility
值......但我也无法使其工作。
如何重构Visibility Binding,以便我只需要定义一次?
答案 0 :(得分:0)
你不能。但您可能想要使用动态资源。在App.xaml中创建可见性资源,如下所示:
<Application.Resources>
<ResourceDictionary
<Visibility x:Key="SomeVisibility">Visible</Visibility>
</ResourceDictionary>
</Application.Resources>
要从XAML绑定到此可见性:
<Button Content="Some button" Visibility="{DynamicResource SomeVisibility}"/>
现在要更改此资源的值,您可以从代码中调用它:
Application.Current.Resources["SomeVisibility"] = Visibility.Collapsed;
修改:实际上,如果您不希望它们在所有应用程序中都是全局的,您可以为特定用户控件定义动态资源。