У меня есть проблема, с которой я сталкиваюсь уже несколько часов.Внутри моего представления xaml у меня есть ListBox
, который определяет DataTemplate
следующим образом:
<DataTemplate>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height ="30"/>
<RowDefinition Height ="30"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<!--Row 0-->
<TextBlock Grid.Column="0"
Grid.Row="0"
Style="{StaticResource racetblk}">
Horse name
</TextBlock>
<TextBlock Grid.Column="1"
Grid.Row="0"
Style="{StaticResource racetblk}">
Horse DOB
</TextBlock>
<!--Row 1-->
<StackPanel Orientation="Horizontal"
Grid.Row="1"
Grid.Column="0">
<TextBox Text="{Binding Path=HorseName, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
Style="{StaticResource tableItem}"
Height="20"
Width="150"/>
<Button Width="50"
Margin="5"
Height="20"
Content="Pick"
Background=" #a1c883 "
Foreground="White"
Command="{Binding PickHorseDataCommand}"
CommandParameter="{Binding ElementName=lbHorseList, Path=SelectedIndex}"/>
</StackPanel>
<TextBox Text="{Binding Path=Birth, Mode=TwoWay, UpdateSourceTrigger=LostFocus}"
Grid.Row="1"
Grid.Column="1"
Style="{StaticResource tableItem}"
Height="20"/>
</Grid>
</DataTemplate>
Внутри шаблона <!--Row 1-->
У меня есть кнопка, которая должна вызывать команду внутри моегоПредполагается, что команда ViewModel запускается после ввода текста внутри TextBox
:
private ICommand pickHorseDataCommand;
public ICommand PickHorseDataCommand
{
get
{
if (pickHorseDataCommand == null)
pickHorseDataCommand = new RelayCommand(
o =>
{
int horseIndex = (int)o;
HorseDataWrapper horse = Horses[horseIndex];
LoadedHorse horseFromList = allHorses.Where(i => i.Name == horse.HorseName).FirstOrDefault();
horse.Birth = horseFromList.Birth.ToString();
var dupa = horse;
});
return pickHorseDataCommand;
}
}
С этим связаны две проблемы.Прежде всего, команда вообще не запускается, я полагаю, что я должен был каким-то образом связать команду, используя RelativeSource
, но до сих пор мне не удалось это сделать.
Другое дело, чтоCommandParameter
привязан к SelectedIndex
, поэтому при нажатии кнопки необходимо выбрать элемент ListBox
, чтобы привязка осуществилась.Я не мог найти другое решение, чтобы сделать привязку без выбора элемента.Может быть, у вас есть альтернативы?
Я ценю ваше время и помощь.