Объявление DependencyProperty
всегда является stati c, но ваше свойство IsControlVisible
не является stati c. Фактически, вы не можете объявить свойство зависимости static
, потому что методы GetValue
и SetValue
не static
.
. Вам нужно определить присоединенный Свойство зависимостей в static
классе:
public static class MyProperties
{
public static readonly DependencyProperty IsControlVisibleProperty = DependencyProperty.RegisterAttached(
"IsControlVisible",
typeof(bool),
typeof(MyProperties));
public static void SetIsControlVisible(UIElement element, Boolean value)
{
element.SetValue(IsControlVisibleProperty, value);
}
public static bool GetIsControlVisible(UIElement element)
{
return (bool)element.GetValue(IsControlVisibleProperty);
}
}
Затем вы можете установить это свойство для любого UIElement
(или любого типа в ваших методах get и set), используя такие методы доступа:
MyProperties.SetIsControlVisible(this, true); //this = the UserControl
Вы связываете с прикрепленным свойством родителя UserControl
следующим образом:
<TextBlock Name="ErrorMessage" Text="Failed to run"
Visibility="{Binding Path=(local:MyProperties.IsControlVisible),
Converter={StaticResource boolToVisConverter},
RelativeSource={RelativeSource AncestorType=UserControl}}" />