Вопрос об архитектуре привязки данных WPF

Я пытаюсь научиться использовать привязку 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 (View):

<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>

Я просмотрел несколько руководств в Интернете и, похоже, правильно следую тому, что нашел там . Есть идеи? Спасибо!

5
задан David Hall 29 April 2011 в 21:30
поделиться