0

サーバー側アプリ ( TradeMarks & RetailStores ) に 2 つのモデルがあり、各 RetailStore には相互参照用の TradeMarkId フィールドがあります。私の DomainService メタデータ モデルでは、次のように RetailStore(TradeMarkId フィールド) を定義しました。

Class RetailStore:
[Display(Order = 5, Name = "RetailStoreTradeMarkTitle", Description = "RetailStoreTradeMarkDescription", ResourceType = typeof(RegistrationDataResources))]
public int TradeMarkId { get; set; }

クライアント側では、AutoGeneratingField でフィールドをキャッチし、次のようにすべての商標をリストするコンボボックスに置き換えます。

        if (e.PropertyName == "TradeMarkId")
        {

            ComboBox TradeMarkIdComboBox = new ComboBox { DisplayMemberPath = "TradeMarkName" };
            Binding itemsSource = new Binding("TradeMarks") { Source = this.retailStoreDomainDataSource.DomainContext };
            Binding selectedItem = new Binding("TradeMark") { Mode = BindingMode.TwoWay };
            TradeMarkIdComboBox.SetBinding(ComboBox.ItemsSourceProperty, itemsSource);
            TradeMarkIdComboBox.SetBinding(ComboBox.SelectedItemProperty, selectedItem);

            DataField TradeMarkIdField = new DataField
            {
                Content = TradeMarkIdComboBox,
                Label = e.Field.Label

            };
            e.Field = TradeMarkIdField;

        }

バインディングに関してはすべて完全に機能しますが、モデルで定義した "RetailStoreTradeMarkTitle", Description = "RetailStoreTradeMarkDescription" DisplayAttributes を失いました。このフィールドの検証を失いました。

だから私の質問は何を間違っているのですか?モデルの検証とフィールド ヘッダーを取得する方法はありますか??

WaMeさん、よろしくお願いします

4

1 に答える 1

0

私はこれにかなり慣れていませんが、問題は e.Field ビットだと思います。おそらく e.Field.ReplaceTextBox を使用する必要があります。

私は非常によく似たものを実装したばかりで、このコードは私のために働いた:-

       if (e.PropertyName == "TradeMarkId")
       {
           ComboBox target = new ComboBox() { DisplayMemberPath = "TradeMarkName", SelectedValuePath = "TradeMarkId" };
           target.ItemsSource = TaskManager.Manager.GanttItemSource;
           e.Field.ReplaceTextBox(target, ComboBox.SelectedValueProperty, binding => binding.Converter = new TargetNullValueConverter());             
       }

それがあなたのために働くことを願っています! (ID プロパティを選択する必要があることに注意してください。どのフィールドを商標 ID として使用しているかわかりません。「TradeMarkId」であると推測しています。

于 2012-01-06T17:04:44.853 に答える