Search code examples
c#wpfwpfdatagrid

error can not Convert CommandParameter object to String


I currently have a WPF data grid with a button.

<DataGrid x:Name="AVL3DataGrid" IsReadOnly="False" ItemsSource="{Binding AVL3DB}" HorizontalAlignment="Stretch" Width="auto" RenderTransformOrigin="-1.802,-5.399" VerticalAlignment="Stretch" Margin="0,36,0,0">
                        <DataGrid.Columns>
                            <DataGridTemplateColumn>
                                <DataGridTemplateColumn.CellTemplate>
                                    <DataTemplate>
                                        <Button Name="LaunchAVL3URLButton" Click="LaunchAVL3URLButton_Click" CommandParameter="{Binding Path=AVL3URL}">Launch</Button>
                                    </DataTemplate>
                                </DataGridTemplateColumn.CellTemplate>
                            </DataGridTemplateColumn>
                        </DataGrid.Columns>
                    </DataGrid>

When i click the button I want it to take the URL and pass it into a web browsers, but I don't know how to convert the object to a string.

private void LaunchAVL3URLButton_Click(Object sender, RoutedEventArgs e)
        {
            object AVL3URL = ((Button)sender).CommandParameter;

            string url = AVL3URL;
            string browserPath = GetStandardBrowserPath();
            if (string.IsNullOrEmpty(browserPath))
            {
                MessageBox.Show("No default browser found!");
            }
            else
            {
                Process.Start(browserPath, url);
            }
        }

I get the following error: Cannot implicitly convert type 'object' to 'string'. An explicit conversion exists (are you missing a cast?)


Solution

  • You are trying to set an object to a string here:

     string url = AVL3URL; 
    

    This should be:

    string url = (string)AVL3URL;