WP7] [MVVM Light Toolkit] Кнопка кнопки слишком рано, перед привязкой при использовании MVVM-Light Toolkit
-
26-09-2019 - |
Вопрос
Я использую MVVM-Light Toolkit в моем приложении Windows Phone 7.
У меня на мой взгляд:
<TextBox Height="78" HorizontalAlignment="Left" Margin="108,33,0,0" VerticalAlignment="Top" Width="313" Text="{Binding MyValue, Mode=TwoWay}" />
<Button Content="Go" Height="78" HorizontalAlignment="Left" Margin="127,252,0,0" Name="button1" VerticalAlignment="Top" Width="213" cmd:ButtonBaseExtensions.Command="{Binding DoCommand}" />
Мой вид модели:
public class MainPageViewModel : ViewModelBase
{
public ICommand DoCommand { get; internal set; }
public MainPageViewModel()
{
DoCommand = new RelayCommand(() =>
{
DoSomethingWith(MyValue);
}, () => true);
}
private const string MyValuePropertyName = "MyValue";
private string _myValue;
public string MyValue
{
get { return _myValue; }
set
{
if (_myValue == value)
return;
_myValue = value;
RaisePropertyChanged(MyValuePropertyName);
}
}
}
В эмуляторе, когда я нахожу значение в текстовом поле, и я нажимаю кнопку, я вижу, что я сначала иду в выражение лямбда релаомманда и с точкой останова, я вижу, что myvalue - это нулевой. Затем достигается точка останова в установке MyValue, и правильное значение идет в MyValue.
Что я делаю неправильно ? Конечно, я хотел бы, чтобы сеттер можно было добраться до релайокомана ...
Заранее благодарю за любую помощь.
Решение
Возможно, вы попали в проблему DataBinding TextBox с помощью TextChanged Event. Это признанная проблема в Silverlight 3, Смотрите эту тему, обсуждающую эту проблему и обходной путь. Аккуратный раствор, возможно, использовать поведение, как обсуждалось в эта статья.
Х-е, индифромоз