Я новичок в C # и MySQL.
В этом ответе на мой предыдущий вопрос о том, как показать messageBox, который содержит данные из SQL, о которых он упоминал:
передать параметр rowIndex и stringToSearch при вызове метода Execute.
и я до сих пор не понимаю, как он работает.
Ниже приведен мой ViewModel
public class VModel
{
public ICommand Clicked { get; set; }
public DataView Library { get; private set; }
public VModel()
{
DataTable dt = new DataTable();
using (MySqlConnection connection = new MySqlConnection("SERVER=localhost;" + "DATABASE=library;" + "UID=root;" + "PASSWORD=;"))
{
MySqlDataAdapter adapter = new MySqlDataAdapter();
adapter.SelectCommand = new MySqlCommand("Select * from movie_list where id_movie = @id_movie", connection);
adapter.Fill(dt);
}
var Library = dt.DefaultView;
var Clicked = new ClickedCommand(this);
}
}
Нажмите
internal class ClickedCommand : ICommand
{
private VModel _vModel;
public ClickedCommand(VModel vModel)
{
_vModel = vModel;
}
public event EventHandler CanExecuteChanged { add { } remove { } }
public bool CanExecute(object parameter)
{
return true;
}
public void Execute(object parameter)
{
var rowIndex = (string)parameter[0];
var stringToSearch = (string)parameter[1];
MessageBox.Show(_vModel.Library.[rowIndex][stringToSearch]);
}
}
Xaml
<ScrollViewer>
<ItemsControl Background="#191919" ItemsSource="{Binding Path=Library}" Margin="130,0,2,0" BorderThickness="0">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="viewModels:Card">
<Button Margin="0,2,0,0" Command="{Binding Path=DataContext.Clicked, RelativeSource={RelativeSource FindAncestor, AncestorType=Window}}">
<StackPanel Margin="0,0,0,0">
<Grid Margin="5,5,5,5">
<Rectangle RadiusX="5" RadiusY="5" Width="150" Height="230">
<Rectangle.Fill>
<ImageBrush x:Name="myImage" ImageSource="{Binding Path=cover}"/>
</Rectangle.Fill>
</Rectangle>
<Label Background="#CC000000" Margin="107,10,0,193" Content="{Binding Path=year}" HorizontalContentAlignment="right" Foreground="White"/>
<Label Width="150" Background="#CC000000" Margin="0,203,0,0" Content="{Binding Path=title}" HorizontalContentAlignment="Center" Foreground="White"/>
</Grid>
<Label Visibility="Visible" Name="lbl" HorizontalContentAlignment="Center" Tag="labl"/>
</StackPanel>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</ScrollViewer>
Вкл. var rowIndex = (string)parameter[0];
и var stringToSearch = (string)parameter[1];
это показывает это:
не может применить индексирование с помощью [] к выражению типа "объект"
И когда я изменяю [rowIndex]
на [0]
, он говорит:
не может преобразовать из "объекта"to" string "