Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将datagrid列转换为超链接_C#_Xaml_Silverlight - Fatal编程技术网

C# 将datagrid列转换为超链接

C# 将datagrid列转换为超链接,c#,xaml,silverlight,C#,Xaml,Silverlight,在我的应用程序中,有一个由功能服务填充的数据网格 在ViewModel中使用以下代码,可以实现硬编码列的可见性切换功能 _featureDataGridService.FeatureDataGrid.AutoGenerateColumns = true; //* to show the object id column for specific layers of a service if (_configService.ProjectConfiguration.ProjectTitle

在我的应用程序中,有一个由功能服务填充的数据网格

在ViewModel中使用以下代码,可以实现硬编码列的可见性切换功能

_featureDataGridService.FeatureDataGrid.AutoGenerateColumns = true;

//* to show the  object id column for specific layers of a service

if (_configService.ProjectConfiguration.ProjectTitle == "Customer profile")
{

    if (SelectedItem == "New Survey Areas")
    {
        _featureDataGridService.FeatureDataGrid.Columns[0].Visibility = Visibility.Visible; 
       //**above line of code shows the object id column of the datagrid
    }
    else
    {
        _featureDataGridService.FeatureDataGrid.Columns[0].Visibility = Visibility.Collapsed;                      

    }
}   
以下是相关的XAML代码: 下面是我的整个datagrid代码:

<slData:DataGrid x:Name="CustomerDetailsDataGrid"   
ItemsSource=" {Binding     SingleReturnedItemAttributes}"  
AutoGenerateColumns="False"HeadersVisibility="None"   
ScrollViewer.HorizontalScrollBarVisibility="Visible"  
ScrollViewer.VerticalScrollBarVisibility="Visible" MaxHeight="350"   
MaxWidth="350">

<slData:DataGrid.Columns>
 <slData:DataGridTextColumn    Binding="  {Binding Path=Key}" 
  FontWeight="Bold"/>
 <slData:DataGridTextColumn Binding="{Binding Path=Value}" Visibility="
{Binding Path=Value,Converter={StaticResource theHttpVisbilityConverter}}" 
 />
 <slData:DataGridTextColumn Binding="{Binding Path=Value}" Visibility="
 {Binding Path=Value,Converter={StaticResource theHttpVisbilityConverter}, 
 ConverterParameter=reverse}" />
</slData:DataGrid.Columns>


因此,现在我的数据网格有了新的服务,它有一个名为
Custmer\u url
的列,其中包含客户特定pdf文档的完整url

我需要使该列可点击(超链接)


datagrid需要自动生成,因为网格也被其他服务使用,因此我不能在XAML中将列硬编码为模板。在这种情况下,如何使包含http://的列动态成为超链接列。

在列中创建两个控件,其中一个有超链接,另一个没有超链接。然后创建可见性转换器以确定文本是否需要超链接

如果转换器检测到HTTP,则返回可见,否则返回折叠

转换器

public class HTTPVisibilityConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool boolVisbility  = (value != null) && value.ToString().StartsWith("http");

        boolVisbility = (parameter != null) ? !boolVisbility : boolVisbility;

        return boolVisbility ? Visibility.Visible : Visibility.Collapsed;
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}
例如,如果我们有两个文本框,这就是调用的方式。请注意,我们将参数文本对象作为“reverse”传递,您可以为相同的效果传递任何内容,例如数字1

 <converters:HTTPVisibilityConverter x:Name="theHttpVisbilityConverter"/>

  ...

 <TextBlock Text="{Binding .}"
            Visibility="{Binding ., 
                         Converter={StaticResource theHttpVisbilityConverter}}" />

 <TextBlock Text="{Binding . }"
            Visibility="{Binding ., 
                         Converter={StaticResource theHttpVisbilityConverter},
                         ConverterParameter=Reverse}" />

...

您是否会拥有包含超链接的列列表(属性名称)?或者,您希望仅当值为http://.I 当列具有超链接时,是否希望将其作为超链接http://Thank 谢谢你的回复。在像这样实现您的想法之后,我得到了可见性值的预期错误。你能告诉我我做错了什么吗here@ayaantara使用实际异常更新您的问题。“System.Windows.Data.Binding”类型的对象无法转换为“System.Windows.Visibility”类型。这是我从消息中得到的。@ayaantara您没有在绑定到的示例上显示名为
Value
的属性,而是
OBJECTID
。为什么要买新的?没有完整的代码示例,我无法确定值是什么以及为什么不能绑定。请查收。当我从中删除可见性零件时