Binden ein Taste IsEnabled / Visibility Eigenschaften mit Hilfe seines x: Namen als Parameter in einem Verfahren, in dem Code-behind

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

Frage

Ich brauche in einem Sicherheitsobjekt auf ein Verfahren in den Kontrollen Namen passieren, dass gibt einen Booleschen Wert für die IsEnabled Eigenschaft und ein anderes Verfahren, das seine Sichtbarkeit zurückgibt (Komprimiert, versteckte oder sichtbare). Diese beiden haben für die Erlaubnis Zwecke zu überprüfen.

Ich habe versucht, eine Object verwenden, aber alle die Beispiele zeigen nur eine Benutzereingabe von einem Textfeld für die Parameter. Ich speziell benötigen einen Steuer Namen der Methode basiert auf abgehen der Schaltfläche x:. Name-Eigenschaft

Was ist die einfachste und effizienteste Weg, um dieses Problem umzugehen. Vielen Dank im Voraus.

UPDATE: Ich versuche, einen Konverter zu verwenden, und dies ist die Konvertit Methode, die ich kam mit:

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

Im Folgenden ist der XAML:

                    <Button.IsEnabled>
                        <MultiBinding Converter="{StaticResource IsFunctionEnabledConverter}">
                            <Binding ElementName="{StaticResource PermissionsTable}" />
                            <Binding ElementName="btnSave" Path="Name" />
                        </MultiBinding>
                    </Button.IsEnabled>
War es hilfreich?

Lösung

Sie können einen IValueConverter schreiben den Methodenaufruf zu machen und in der Steuerung selbst {Binding RelativeSource={RelativeSource Self}, Converter={StaticResource MyConverter}} Verwendung übergeben. In der Convert-Methode können Sie dann Wert auf Kontrolle werfen und Zugriff auf die Namenseigenschaft des Steuer auf die Sicherheitsmethode zu übergeben. Durch die Überprüfung target können Sie bestimmen, ob ein boolean (für IsEnabled) zur Ausgabe oder Sichtbarkeit Enum.

*** UPDATE

Ich gehe davon aus, dass die „PermissionTable“ Ressource verwendet mit Ihrem Konverter Bindung ist eigentlich die Datatable, aber Sie versuchen, es als eine Zeichenfolge zu verwenden, um ein Element von Namen wie die Bindungsquelle zu identifizieren. Versuchen Sie es mit Source="{StaticResource PermissionsTable}" stattdessen die Datatable-Ressource übergeben sich.

Andere Tipps

Es gibt unterschiedliche Möglichkeiten, dieses Problem zu nähern, je nachdem, wie Sie Ihre Anwendung architected haben. Wenn Sie Benutzersteuer Ansichten verwenden und je nach Code-behind Ihre einfachste Weg sein, um die Sicherheit des Objekts Methoden direkt aus dem Code aufrufen hinter und Satz Eigenschaften direkt auf die Kontrollen in Frage.

Wenn Sie MVVM verwenden oder du bist einfach kein Fan von Code-behind, einen anderen Weg, um dieses Problem kann mit einem angefügten Eigenschaft . Befestigt Eigenschaften sind eine Möglichkeit, den WPF-Abhängigkeitseigenschaft Rahmen der Verwendung zum Speicher von Daten über ein Objekt oder die Kontrolle, dass das Objekt oder die Kontrolle nicht ursprünglich selbst erklären.

Zusammen mit angefügten Eigenschaften kommt ein Konzept gebunden Verhalten genannt. Im Wesentlichen, wenn Sie eine angefügte Eigenschaft erstellen, sind Sie einen Haken für einen Rückruf gegeben, die aufgerufen wird, wenn die Eigenschaft auf ein Objekt gesetzt. Wenn dieser Rückruf aufgerufen wird, erhalten Sie das Objekt Eigentum an sowie neue und alte Werte für die Eigenschaft festgelegt wurde.

Sie können den Rückruf als eine Gelegenheit, um den Wert der Immobilie gegen Ihr Sicherheitsobjekt zu überprüfen und setzen die aktivierten und sichtbare Eigenschaften, wie Sie für richtig halten.

- HTH Dusty

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top