2

私は、設計時に作成された 2 つの項目 (文字列) で構成される非常に単純なウルトラオプション セットに取り組んでいます。オプションセットの値は、(バインディング ソースを介して) ビューモデルの文字列プロパティにバインドされます。データ ソースの更新モードは OnPropertyChanged に設定されています。

問題は、ビューでオプションセット全体がフォーカスを失う前にビューモデルが更新されないことです。そのため、2 つの値を行ったり来たりすると、プロパティは変更を取得できず、コントロールの検証は機能しません (データが更新されないため)。

これは非常に単純なはずなので、私はとてもばかげていると感じます。私は何を間違っていますか?:D

乾杯!

4

1 に答える 1

0

これを NetAdvantage 2012 Volume 2 でテストしたところ、UI で選択したオプションを変更すると、UltraOptionSet がバインドされているオブジェクトのプロパティのセッターがプロパティの変更時に更新されることがわかりました。これは私が使用したコードです:

public partial class Form1 : Form
{
    TestObject to;
    public Form1()
    {
        InitializeComponent();
        to = new TestObject() { Prop = "Two"};
        Binding optionBinding = new Binding("Value", to, "Prop");
        optionBinding.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
        this.ultraOptionSet1.DataBindings.Add(optionBinding);
    }

}

public class TestObject
{
    private string prop;
    public string Prop
    {
        get
        { 
            return prop; 
        }
        set
        {
            System.Diagnostics.Debug.WriteLine("Current value :" + prop + " is being set to " + value);
            if (value != prop) prop = value;
        }
    }
}

バインディングで DataSourceUpdateMode が正しく設定されていることを確認することをお勧めします。その場合、テストできる NetAdvantage コントロールの新しいサービス リリースがあるかどうかを確認することをお勧めします。

于 2012-11-16T17:14:14.500 に答える