Я пытаюсь научиться использовать привязку WPF и архитектуру MVVM.Я сталкиваюсь с некоторыми проблемами со свойствами зависимости.Я пытался контролировать видимость элемента в представлении, привязав его к DependencyProperty в DataContext, но он не работает.Независимо от того, что я установил значение GridVisible
в конструкторе модели представления ниже, оно всегда отображается как видимое, когда я запускаю код.
Кто-нибудь может увидеть, где я иду не так?
Код C # (ViewModel):
public class MyViewModel : DependencyObject
{
public MyViewModel ()
{
GridVisible = false;
}
public static readonly DependencyProperty GridVisibleProperty =
DependencyProperty.Register(
"GridVisible",
typeof(bool),
typeof(MyViewModel),
new PropertyMetadata(false,
new PropertyChangedCallback(GridVisibleChangedCallback)));
public bool GridVisible
{
get { return (bool)GetValue(GridVisibleProperty); }
set { SetValue(GridVisibleProperty, value); }
}
protected static void GridVisibleChangedCallback(
DependencyObject source,
DependencyPropertyChangedEventArgs e)
{
// Do other stuff in response to the data change.
}
}
Код XAML (Просмотр):
<UserControl ... >
<UserControl.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConverter" />
</UserControl.Resources>
<UserControl.DataContext>
<local:MyViewModel x:Name="myViewModel" />
</UserControl.DataContext>
<Grid x:Name="_myGrid"
Visibility="{Binding Path=GridVisible,
ElementName=myViewModel,
Converter={StaticResource BoolToVisConverter}}">
<!-- Other elements in here -->
</Grid>
</UserControl>
Я посмотрелна нескольких уроках онлайн, и кажется, что я правильно следую тому, что нашел там.Есть идеи?Спасибо!