Переключатели MVVM

Для вашего файла functions.php есть фрагмент:

function custom_admin_js() {
    $url = get_bloginfo('template_directory') . '/js/wp-admin.js';
    echo '"<script type="text/javascript" src="'. $url . '"></script>"';
}
add_action('admin_footer', 'custom_admin_js');

Отлично работает на Wordpress 3.2.1.

40
задан Jackson 3 August 2015 в 14:29
поделиться

3 ответа

Посмотрите здесь .

Я не реализовал предложенное решение, но оно имеет смысл. Базовый элемент управления фреймворка разрывает ваши привязки при выполнении щелчка. Решение состоит в том, чтобы переопределить метод, который делает это, и просто полагаться на привязки.

19
ответ дан 27 November 2019 в 01:53
поделиться

Я написал простой совет по этой проблеме в моем блоге.

В этом случае вам следует написать View и ViewModel следующим образом:

<StackPanel Orientation="Horizontal" Grid.ColumnSpan="2">
    <RadioButton IsChecked="{Binding IsGeneralNote}">General</RadioButton>
    <RadioButton IsChecked="{Binding IsContactNote}">Contact</RadioButton>
    <RadioButton IsChecked="{Binding IsAddressNote}">Address</RadioButton>
    <RadioButton IsChecked="{Binding IsPhoneNote}">Phone</RadioButton>
</StackPanel>


public enum Note
{
    General,
    Contact,
    Address,
    Phone,
}

...

    Note note = Note.General;

    public Note Note
    {
        get { return this.note; }
        set
        {
            if (this.note == value)
                return;

            this.note = value;
            OnPropertyChanged("Note");
            OnPropertyChanged("IsGeneralNote");
            OnPropertyChanged("IsContactNote");
            OnPropertyChanged("IsAddressNote");
            OnPropertyChanged("IsPhoneNote");
        }
    }

    public bool IsGeneralNote
    {
        get { return Note == Note.General; }
        set { Note = value ? Note.General : Note; }
    }

    public bool IsContactNote
    {
        get { return Note == Note.Contact; }
        set { Note = value ? Note.Contact : Note; }
    }

    public bool IsAddressNote
    {
        get { return Note == Note.Address; }
        set { Note = value ? Note.Address : Note; }
    }

    public bool IsPhoneNote
    {
        get { return Note == Note.Phone; }
        set { Note = value ? Note.Phone : Note; }
    }
...
8
ответ дан 27 November 2019 в 01:53
поделиться

Хайме Родригес , который работает в Microsoft над WPF, публикует полные вопросы и ответы о WPF, а в последнем выпуске есть сообщение о RadioButtons и MVVM!

Сообщение находится по адресу

1137208] http://blogs.msdn.com/jaimer/archive/2009/09/22/wpf-discussion-090922.aspx , и вы хотите посмотреть на последний элемент в этом сообщении. Я протестировал решение, и оно мне понравилось.

Цитируется для удобства:

Я работал над этой проблемой в .NET 3.5 SP1. Вот как я привязываю данные группы переключателей к свойству с перечисляемым значением:

<StackPanel>
    <RadioButton Content="New folder"
        IsChecked="{Binding Path=PublishTarget,
                    Converter={StaticResource equalityConverter},
                    ConverterParameter={x:Static local:PublishTarget.NewServerFolder}, Mode=TwoWay}"
        GroupName="1" />

    <RadioButton Content="Existing folder"
        IsChecked="{Binding Path=PublishTarget,
                    Converter={StaticResource equalityConverter},
                    ConverterParameter={x:Static local:PublishTarget.ExistingServerFolder},
                    Mode=TwoWay}"
        GroupName="2" />

    <RadioButton Content="Local folder"
        IsChecked="{Binding Path=PublishTarget,
                    Converter={StaticResource equalityConverter},
                    ConverterParameter={x:Static local:PublishTarget.LocalFolder},
                    Mode=TwoWay}"
        GroupName="3" />
</StackPanel>

Установка уникального значения GroupName каждого переключателя предотвращает сбивание привязки, когда пользователь щелкает переключатель. Здесь я полагаюсь на источник данных для реализации INotifyPropertyChanged, который сообщит другим переключателям об обновлении. Аналогичный подход должен работать для переключателей в ItemsControl.

16
ответ дан 27 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: