gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 08:04:50 25 4
gpt4 key购买 nike

我正在尝试将 ListView 或 GridView 作为 ConverterParameter 传递但是,在 Converter 例程中,参数以字符串类型出现

下面是 XAML List View 和 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 绑定(bind),同时实现几乎相同的事情。

由于循环依赖性限制,您不能在树中引用控件本身或它的祖先。但是,您可以将绑定(bind)向上移动一个级别并仅继承 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com