ボタンのバインドISENABLED/viviviledプロパティx:code-behindのメソッドのパラメーターとして名前を使用します

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

質問

コントロール名を、ISENabledプロパティのブール値を返すセキュリティオブジェクトのメソッドと、その可視性を返す別のメソッド(崩壊、非表示、または表示)に渡す必要があります。これらは両方とも許可のためにチェックする必要があります。

ObjectDataProviderを使用してみましたが、すべての例には、パラメーターのテキストボックスからのユーザー入力のみが表示されます。ボタンのX:名前プロパティに基づいて、コントロール名をメソッドに渡す必要があります。

この問題を処理する最も簡単で効率的な方法は何ですか。前もって感謝します。

アップデート:私はコンバーターを使用しようとしていますが、これは私が思いついた変換方法です。

    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}}. 。 Convertメソッドでは、Valueをキャストしてコントロールの名前プロパティを制御およびアクセスして、セキュリティメソッドに渡すことができます。 TargetTypeをチェックすることにより、ブール値(ISENABLEDの場合)を出力するか、可視性列挙を出力するかを判断できます。

***アップデート

コンバーターバインディングで使用される「許可テーブル」リソースは実際にはデータテーブルですが、名前ごとにバインディングソースとして要素を識別するために文字列として使用しようとしています。使用してみてください Source="{StaticResource PermissionsTable}" 代わりに、データ測定可能なリソース自体を渡します。

他のヒント

アプリケーションをアーキテクチャ化した方法に応じて、この問題にアプローチするさまざまな方法がある場合があります。ユーザーコントロールビューを使用しており、コードビハインドに応じて、最も簡単なルートは、セキュリティオブジェクトのメソッドを背後のコードから直接呼び出し、問題のコントロールにプロパティを直接設定することです。

MVVMを使用している場合、またはCode-Behindのファンではない場合、この問題に関する別の方法は、ボタンの名前を使用して捨てて、 添付のプロパティ. 。添付のプロパティは、WPF依存関係プロパティフレームワークを使用して、オブジェクトまたはコントロールが最初に宣言しなかったオブジェクトまたはコントロールに関するデータを保存する方法です。

添付のプロパティとともに、添付の動作と呼ばれる概念があります。基本的に、添付のプロパティを作成すると、プロパティがオブジェクトに設定されるたびに呼び出されるコールバックのフックが与えられます。このコールバックが呼び出されると、プロパティが設定されたオブジェクトと、プロパティの新しいおよび古い値を受け取ります。

コールバックを使用して、セキュリティオブジェクトに対してプロパティの値を確認し、適切に見えるように有効化されている可視プロパティを設定することができます。

- ほこりっぽい

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top