Silverlight 3 AutocompleteBox.text не обновляется - PullRequest
0 голосов
/ 08 декабря 2010

В Silverlight 3 я делаю что-то вроде:

//currentDataForm.itemssource = currentCollisionDisplay;
//<input:AutoCompleteBox Width="74" x:Name="InvolvedCnt" Text="{Binding involvedCnt, Mode=TwoWay}"

...

   for (int i = 0; i < driverNums; i++)
   {
        AddCollisionVehicle_Click(null, null); 
   }                  

...

private void AddCollisionVehicle_Click(object sender, RoutedEventArgs e)
{
currentCollisionDisplay.involvedCnt ++;
(df_collision.FindNameInContent("InvolvedCnt") as AutoCompleteBox).Text = currentCollisionDisplay.involvedCnt.ToString();
(df_collision.FindNameInContent("InvolvedCnt") as AutoCompleteBox).UpdateLayout();
string testString = (df_collision.FindNameInContent("InvolvedCnt") as AutoCompleteBox).Text;
}

поэтому начальное значениеautocompletebox равен "1".если driverNums = 1, тогда autocompletebox.text равен 2 .. что правильно, но если driverNums = 2, тогда autocompletebox.text равно 2 .. что неверно.

Я изменил текстовое поле autocompletebox в массиве,но это не обновляется должным образом .. кто-нибудь знает, как решить эту проблему?

Странно, если я проверяю переменную testString, значение верное ..

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

Это, кажется, известная проблема. Смотри http://forums.silverlight.net/forums/p/199616/519232.aspx

Обходной путь, который работал в моем приложении, - очистить свойство Text, а затем установить его заново с помощью Dispatcher.BeginInvoke, то есть что-то вроде этого:

autoCompleteBox.Text = null;
Dispatcher.BeginInvoke(() =>
    autoCompleteBox.Text = currentCollisionDisplay.involvedCnt.ToString());

Я сделал это только в одном сценарии, поэтому не знаю точно, сработает ли это для вас. Мое приложение также использовало привязки (я назвал ClearValue, а затем SetBinding).

0 голосов
/ 15 октября 2014

Вам необходимо использовать метод «ValueMemberBrinding»

<toolkit:AutoCompleteBox x:Name="InvolvedCnt" ValueMemberBinding="{Binding Name}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...