GridView作为ConverterParameter传递

GridView作为ConverterParameter传递

我正试图将ListView或GridView作为ConverterParameter传递
但是,在converter例程中,参数是以类型字符串的形式出现的
下面是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, Type targetType, object parameter, 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">

关于c# - 如何将GridView作为ConverterParameter传递,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10105637/

10-11 00:19