nortee Ответов: 2

Обязательными для isenabled/видимости и изменения свойств


Привет,

Я хотел бы включить/отключить/скрыть определенные функции, основанные на входе/выходе из приложения. Это работает не так, как ожидалось. Может ли кто-нибудь, пожалуйста, указать мне, что я могу сделать, чтобы это работало правильно?
<someControl Text="New Action" Loaded="BtnSomeAction_Loaded" ToolTip="New Action" Visibility="{Binding Converter={StaticResource canDoSomethingBasedOnUserRights}, Mode=OneWay, NotifyOnSourceUpdated=True, UpdateSourceTrigger=PropertyChanged}"/>

Код преобразователя:
public class CanDoSomethingBasedOnUserRights : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return (someValidationConstraint)
            ? Visibility.Visible
            : Visibility.Collapsed;
    }


    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }

}

Вы также можете переключить преобразователь на включение управления. Может ли кто-нибудь посоветовать мне, что я делаю не так?

Спасибо,
Мне

Что я уже пробовал:

Основываясь на вышесказанном, я не уверен, что пропустил... :/.. должен ли я сделать этот конкретный ресурс динамичным? (Очевидно, я еще не пробовал этого делать, но не уверен, что это поможет)

2 Ответов

Рейтинг:
2

Gerry Schmitz

Вы ищете не в том месте; это происходит на уровне пользовательского элемента управления, окна, контекста данных.

INotifyPropertyChanged Интерфейс (System.ComponentModel) | Microsoft Docs[^]


nortee

Привет Джерри,

Объект, к которому я привязываюсь, действительно реализует интерфейс INotifyPropertyChanged.

Gerry Schmitz

Тогда ни один из показанных вами кодов не будет полезен для идентификации проблемы или того, что отсутствует в терминах XAML, привязки, public versus private, getter / setters, timing, обратного вызова ....

nortee

Привет Джерри,

Я не могу отблагодарить вас за ваши ответы. Я действительно нашел эту проблему, и это была ошибка n00b. И это касалось моей обязательной части. Я не применял привязку к свойству, которое я хотел, чтобы конвертер соответствующим образом отрегулировал. Я протестировал свое обновление и теперь оно работает так, как ожидалось:

&ЛТ;somecontrol текст="новое действие" нагруженных="BtnSomeAction_Loaded" подсказка="новое действие" видимость="{привязки SomeControtrollingProperty конвертер={расширение StaticResource canDoSomethingBasedOnUserRights}}"&ГТ;

nortee

Я также приношу извинения, если вопрос не был таким кратким, как мне (или вам) хотелось бы/ожидалось.

Рейтинг:
10

nortee

Как уже отмечалось, я решил этот вопрос. Причина: ошибка N00B... :/

Спасибо всем!!!