错误无法将CommandParameter对象转换为String

时间:2016-05-11 20:35:59

标签: c# wpf wpfdatagrid

我目前有一个带按钮的WPF数据网格。

<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>

当我点击按钮时,我希望它获取URL并将其传递到Web浏览器,但我不知道如何将对象转换为字符串。

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);
            }
        }

我收到以下错误: 无法隐式转换类型&#39;对象&#39;到&#39;字符串&#39;。存在显式转换(您是否错过了演员?)

3 个答案:

答案 0 :(得分:1)

您正在尝试将对象设置为字符串:

 string url = AVL3URL; 

这应该是:

string url = (string)AVL3URL;

答案 1 :(得分:0)

您需要明确地将对象转换为String。

而不是string url = AVL3URL;

string url = Convert.ToString(AVL3URL);

答案 2 :(得分:0)

对象不会隐式转换为字符串。

string AVL3URL = ((Button)sender).CommandParameter.toString();