Привязывание кнопок IseNabled/Visebility с использованием его x: имя в качестве параметра в методе в коде-мышке

StackOverflow https://stackoverflow.com/questions/4325020

Вопрос

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

Я пытался использовать ObjectDataproVider, но все примеры показывают только пользовательский ввод из текстового поля для параметров. Мне специально нужно передать имя управления методу, основанное на свойстве кнопки x: name.

Что является самым простым и наиболее эффективным способом решения этой проблемы. Заранее спасибо.

ОБНОВИТЬ:Я пытаюсь использовать конвертер, и это метод преобразования, который я придумал:

    public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (values != null)
        {
            DataTable tblPermissions = (DataTable)values[0];
            string sFunctionName = values[1].ToString();

            DataRow[] rows = tblPermissions.Select("fun_name = '" + sFunctionName + "'");
            if ((bool)rows[0]["fun_enable"])
                return true;
            else
                return false;
        }

        return string.Empty;
    }

Ниже приведено XAML:

                    <Button.IsEnabled>
                        <MultiBinding Converter="{StaticResource IsFunctionEnabledConverter}">
                            <Binding ElementName="{StaticResource PermissionsTable}" />
                            <Binding ElementName="btnSave" Path="Name" />
                        </MultiBinding>
                    </Button.IsEnabled>
Это было полезно?

Решение

Вы можете написать IvalueConverter, чтобы сделать вызов метода и передать самому элементу управление, используя {Binding RelativeSource={RelativeSource Self}, Converter={StaticResource MyConverter}}. Анкет В методе преобразования вы можете затем отменить значение для управления и получить доступ к свойству контроля, чтобы передать метод безопасности. Проверяя TargetType, вы можете определить, вывести ли логический (для ISENAPBENT) или ENUM видимости.

***ОБНОВИТЬ

Я предполагаю, что ресурс «разрешения», используемый при привязке конвертера, на самом деле является данным, но вы пытаетесь использовать его в качестве строки для идентификации элемента по имени в качестве источника привязки. Попробуйте использовать Source="{StaticResource PermissionsTable}" Вместо этого передавать сам ресурс DataTable.

Другие советы

Могут быть разные способы подходить к этой проблеме в зависимости от того, как вы заархитировали свое приложение. Если вы используете представления пользователя управления и в зависимости от кода-бейджа, ваш самый простой маршрут может состоять в том, чтобы вызвать методы объекта безопасности непосредственно из кода и установить свойства непосредственно на рассматриваемые элементы управления.

Если вы используете MVVM или просто не фанат кода, другой способ обойти эту проблему может быть отказ от имени кнопки и перейти с Прилагаемое свойство. Анкет Прилагаемые свойства - это способ использования структуры свойств зависимости WPF для хранения данных об объекте или управлении, который объект или управление не объявляли себя.

Наряду с прикрепленными свойствами появляется концепция, называемая прикрепленным поведением. По сути, когда вы создаете прикрепленное свойство, вам дают крючок для обратного вызова, который называется всякий раз, когда свойство устанавливается на объект. Когда этот обратный вызов вызывается, вы получаете объект, на его свойство было установлено, а также новые и старые значения для собственности.

Вы можете использовать обратный вызов как возможность проверить значение свойства против вашего объекта безопасности и установить включенные и видимые свойства, как вы считаете нужным.

- HTH Dusty

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top