WPF Command CanExecute not called when White operates the UI

Jul 4, 2010 at 7:58 PM
Edited Jul 4, 2010 at 8:01 PM

Using White 0.2, VS 2010, Win7 64 bit

I have a simple form with a textbox and an "Add Item" button beside it in a WPF App. Now I have wired it up such that the button is enabled only if the textbox contains a numeric value.

The button's command has the Execute and CanExecute code blocks as shown. (ItemNumber is a property bound to the text field)


this.AddItemCommand = new RelayCommand(SnipeNewItem,  // execute
                                        (arg) =>
                                                 int itemNo;
                                                 return Int32.TryParse(ItemNumber, out itemNo);   


When I manually run the app, this works perfectly. The button is enabled as soon as I type in a numeric value in the text field.

However when run via White, I ran into some issues


var textBox = _window.Get<TextBox>("_itemToSnipe");
            //textBox.Text = itemNo.ToString();                                    // this didnt set the text
            //textBox.BulkText = itemNo.ToString();                              // set the text but didnt enable the button     
            textBox.SetValue(itemNo.ToString());                                  // same as above.
            var addItemButton = _window.Get<Button>("_btnAddItem");

            //addItemButton.Click();                                                    // didnt work
            addItemButton.RaiseClickEvent();                                       // works. However will throw if the button is not enabled at this point.


I realize that some part of this has something to do with http://white.codeplex.com/workitem/5276?ProjectName=white

However RaiseClickEvent() seems to have solved that problem, its the databinding canExecute not triggering that is holding me up now.

Any ideas ?

Jul 18, 2010 at 9:14 AM

does this work on 32 bit machines?