0

私を助けてください

私は持っています

public partial class OrderControl : UserControl
{
    private OrderHeader orderHeader;
    public Customer selectedCustomer { get; set; }
    private Customer[] allCustomers;
    public User selectedManager { get; set; }
    private User[] allManagers;


    public OrderControl()
    {
        InitializeComponent();
        DataContext = this;
    }
...
}

そして、ソースにバインドする一方向が必要です。

<ComboBox Name="CustomerComboBox" SelectedItem="{Binding selectedCustomer}"/>

これは、selectedCustomerプロパティをOrderControl.xaml.csに保持するための最良の方法ですか、それとも..、selectedCustomer、...プロパティを使用してOrderViewModelクラスを作成し、OrderViewModelのインスタンスをOrderControl.xaml.csに保持する必要がありますか?

ありがとう

4

3 に答える 3

0

これは、INotifyPropertyChangedを実装する場合に機能します。現在、プロパティが設定されているときにコンボボックスが更新を取得する方法はありません。http://msdn.microsoft.com/en-us/library/ms229614.aspxを参照してください

ただし、MVVMをフォローする場合は、ビューモデルオブジェクトを作成する必要があります。

于 2012-07-19T18:05:37.127 に答える
0

実際のユーザーコントロールを作成したい場合は、次のことを行うべきではありません:

 DataContext = this;

HBからの引用

そのような DataContext を設定することは「外部から」見えず、通常は DataContext の継承が必要であり、期待されるものであるため、実用的ではありません。

ここに同様の質問と回答があります。

ただし、最初にviewmodelでMVVMを実行したい場合。

レイチェルからの引用:

MVVM では、ViewModel がアプリケーションであることを忘れないでください。View は、ユーザーが ViewModel とやり取りできるようにするための単なるインターフェイスです。

つまり、必要なすべてのプロパティとコマンドを備えた適切なビューモデルを作成する必要があります。現在は単なるビューであるため、ユーザーコントロールからすべてのコードを削除してください。viewmodel は、最初に datatemplate を介して viewmodel とビューを接続します。

于 2012-07-20T06:49:20.347 に答える