0

私は自分のアプリケーションでたくさんのデータ入力タイプのフォームを書いてきましたが、もう少し簡単にする必要があるという結論に達しました。いくつかの読み取りを行った後、これは、フォームを表すためにサブクラス化されたItemsControlを使用して行うことができるようです。

私はこれを行い、今は次のようなものがあります

<MySubClassedForm></MySubClassedForm>

ここで実行したいのは、「LabelText」という添付プロパティを設定して、内部の任意のコントロールで使用できるようにすることです。

例として、

<MySubClassedForm>
<TextBox MySubClassedForm.LabelText="Surname" />
<Image MySubClassedForm.LabelText="LabelText" />
</MySubClassedForm>

添付プロパティの定義:-

 public static DependencyProperty LabelTextProperty = DependencyProperty.RegisterAttached("LabelText", typeof(string), typeof(MySubclassedForm),
         new UIPropertyMetadata(string.Empty));

        public string LabelText
        {
            get { return (string)GetValue(LabelTextProperty); }
            set { SetValue(LabelTextProperty, value); }
        }

添付プロパティをMySubClassedFormに配置することから始めましたが、次のエラーが発生します
。-添付プロパティ'MySubClassedForm.LabelText'が'TextBox'またはその基本クラスの1つで定義されていません。

私が間違っていることと、これを機能させるために何をする必要があるかを教えてください。

ありがとうアレックス

4

2 に答える 2

1

静的ゲッターメソッドとセッターメソッドを定義する必要があります。

public static readonly DependencyProperty LabelTextProperty =
    DependencyProperty.RegisterAttached(
        "LabelText", typeof(string), typeof(MySubclassedForm),
        new UIPropertyMetadata(string.Empty)); 

public static string GetLabelText(DependencyObject obj) 
{ 
    return (string)obj.GetValue(LabelTextProperty);
}

public static void SetLabelText(DependencyObject obj, string value) 
{ 
    obj.SetValue(LabelTextProperty, value); 
} 

カスタム添付プロパティの詳細については、こちらをご覧ください。

于 2012-04-22T20:01:14.920 に答える
0

magellanをご覧ください 。WPFフォームエンジンと優れたMVCフレームワークの両方を備えています。どちらももう一方なしで使用できます。

それはあなたがすることができます

<Form>
    <Field For="{Binding Path=Server.Server}" />
    <Field For="{Binding Path=Server.CachedExchangeMode}" />
    <Field For="{Binding Path=Server.Username}" />
    <Field For="{Binding Path=Server.SecurityMode}" />
</Form>

これにより、ビューモデルのプロパティに適切な入力フィールドタイプが自動生成されます。

于 2012-04-22T19:58:53.140 に答える