1
У меня есть следующая модель и я могу использовать canSubmit для команды SubmitOrder. Свойство Quantity привязано к текстовому свойству TextBox. И когда я ввожу некоторый текст в TextBox, он не запускает canSubmit наблюдаемый, и команда по-прежнему включена. Вот мой ViewModel:ReactiveCommand с CanExecute на свойство Int32
public class CreateOrderViewModel : ReactiveObject
{
private int _quantity;
public int Quantity
{
get { return _quantity; }
set { this.RaiseAndSetIfChanged(ref _quantity, value); }
}
private ISymbol _selectedSymbol;
public ISymbol SelectedSymbol
{
get { return _selectedSymbol; }
set { this.RaiseAndSetIfChanged(ref _selectedSymbol, value); }
}
private BuySell _side;
public BuySell Side
{
get { return _side; }
set { this.RaiseAndSetIfChanged(ref _side, value); }
}
public ReactiveCommand<Unit, IOrderProcessor> SubmitOrder { get; }
public CreateOrderViewModel(IOrderService orderService)
{
var canSubmit = this.WhenAnyValue(v => v.SelectedSymbol, v => v.Quantity,
(symbol, quantity) => symbol != null && quantity > 0);
SubmitOrder = ReactiveCommand.Create(
() => orderService.SubmitOrder(CreateOrderFromParameters()),
canSubmit);
}
private Order CreateOrderFromParameters()
{
return new Order
{
Quantity = Quantity,
Symbol = SelectedSymbol,
Side = Side
};
}
}
Мой XAML:
<TextBlock Grid.Row="0" Grid.Column="0"
Text="{x:Static properties1:Resources.Quantity}"
/>
<TextBox Grid.Row="0" Grid.Column="1"
Text="{Binding Quantity, UpdateSourceTrigger=PropertyChanged}"
/>
<TextBlock Grid.Row="0" Grid.Column="2"
Text="{x:Static properties1:Resources.Symbol}"
/>
<ComboBox Grid.Row="0" Grid.Column="3"
ItemsSource="{Binding Symbols}"
DisplayMemberPath="Ticker"
SelectedItem="{Binding SelectedSymbol}"
/>
<StackPanel Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="6"
HorizontalAlignment="Left">
<Button Content="{x:Static properties1:Resources.Submit}"
Command="{Binding SubmitOrder}"
/>
</StackPanel>
Можете ли вы поделиться с тобой Ваши привязки со стороны взгляда? –