我正试图将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/