Здравствуйте,
Прочитав множество тем о привязке видимости в течение нескольких часов, я спрашиваю здесь, потому что мне не удается заставить мое дело работать.
У меня есть сетка с настраиваемым присоединенным свойством (типа System.Windows.Visibily), которое я хочу использовать для отображения (или нет) текстового блока внутри сетки (путем привязки). Также я хочу изменить видимость каждый раз, когда изменяется пользовательское прикрепленное свойство.
Что я уже сделал: класс CustomProperties:
public static class CustomProperties
{
public static readonly DependencyProperty starVisibilityProperty =
DependencyProperty.RegisterAttached("starVisibility",
typeof(System.Windows.Visibility), typeof(CustomProperties),
new FrameworkPropertyMetadata(null));
public static System.Windows.Visibility GetStarVisibility(UIElement element)
{
if (element == null)
throw new ArgumentNullException("element");
return (System.Windows.Visibility)element.GetValue(starVisibilityProperty);
}
public static void SetStarVisibility(UIElement element, System.Windows.Visibility value)
{
if (element == null)
throw new ArgumentNullException("element");
element.SetValue(starVisibilityProperty, value);
}
}
Тогда вот мой xaml:
<Grid Name="server1State" Grid.Row="1" local:CustomProperties.StarVisibility="Hidden">
<TextBlock Name="server1Star" Text="" FontFamily="{StaticResource fa-solid}" FontSize="30" Margin="10" Foreground="#375D81" Visibility="{Binding ElementName=server1State, Path=server1State.(local:CustomProperties.starVisibility)}"/>
</Grid>
Но когда я запускаю свое приложение, текстовый блок абсолютно не скрыт, он виден и никогда не меняется. Я пробовал много вещей с Path, а также с INotifyPropertyChanged, но, поскольку я работаю со статическим настраиваемым присоединенным свойством, мне не удалось заставить его работать.
Возможно, кто-то из вас мог бы мне помочь, спасибо.