加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何将GridView作为ConverterParameter传递

发布时间:2020-12-15 17:38:54 所属栏目:百科 来源:网络整理
导读:我试图将ListView或GridView作为ConverterParameter传递 但是,在转换器例程中,该参数作为一个类型字符串 以下是XAML列表视图和Converter类的一部分. 任何帮助非常感谢.谢谢!!! ListView Name="SeqDtStDataListView1" Grid.Row="1" DataContext="{Binding
我试图将ListView或GridView作为ConverterParameter传递
但是,在转换器例程中,该参数作为一个类型字符串

以下是XAML列表视图和Converter类的一部分.

任何帮助非常感谢.谢谢!!!

<ListView Name="SeqDtStDataListView1" Grid.Row="1" 
        DataContext="{Binding Path=DisplayDT[0],Converter ={StaticResource      
                                                       CNVToColumn},ConverterParameter=?????}"
        VerticalContentAlignment="Stretch" VerticalAlignment="Stretch"
                                                       HorizontalAlignment="Stretch"
        SelectionChanged="SEQDatalistview_SelectionChanged"  Margin="5"> 


       <ListView.View >
             <GridView x:Name="SeqDtStDataGridView1"/>
       </ListView.View>
    </ListView>

转换器:

namespace MFTest.Converters
{
public class CNVToColumn : IValueConverter
{

    public object Convert(object value,Type targetType,object parameter,System.Globalization.CultureInfo culture)
    {
        DataTable dt = (DataTable)value;
        GridView GV = (GridView)parameter;                <========= fail here ===========
        if (dt != null && GV != null)
          foreach (var colum in dt.Columns)               // Binding the Columns
          {
                DataColumn dc = (DataColumn)colum;
                GridViewColumn column = new GridViewColumn();
                column.DisplayMemberBinding = new Binding(dc.ColumnName);
                column.Header = dc.ColumnName;
                GV.Columns.Add(column);
          } 
        return null;
    }

    public object ConvertBack(object value,System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }

}
}

解决方法

从.NET 4开始,您可以使用 x:Reference,它允许您避免只能在依赖属性上设置的ElementName绑定,同时实现几乎相同的事情.

由于循环依赖性限制,您无法引用其本身或其树中的祖先的控件.然而,您可以将绑定移动一级,并继承DataContext,例如.

<Border DataContext="{Binding Path=DisplayDT[0],Converter={StaticResource CNVToColumn},ConverterParameter={x:Reference SeqDtStDataListView1}}">
    <ListView Name="SeqDtStDataListView1" Grid.Row="1">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读