gpt4 book ai didi

wpf - 使用参数将 WPF GridViewColumn 绑定(bind)到方法

转载 作者:行者123 更新时间:2023-12-05 07:51:26 24 4
gpt4 key购买 nike

我正在尝试将 GridViewColumn 绑定(bind)到带有参数的方法。

我当前的 XAML 如下所示:

<ListView Margin="10" ItemsSource="{DynamicResource RemoteAgents}" Name="lvRemoteAgents" DataContext="">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Value.ID}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Value.name}" />
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Value.type}" />
</GridView>
</ListView.View>
</ListView>

ID、名称和类型是 ItemSource 类的预定义属性。这些属性实际上是 JSON 结构的字段。因此,我不想绑定(bind)到属性,而是想通过字段名称访问 JSON 字段。在伪代码中,我看起来像这样:

   <ListView Margin="10" ItemsSource="{DynamicResource RemoteAgents}" Name="lvRemoteAgents" DataContext="">
<ListView.View>
<GridView>
<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Value.GetValue('ID')}" />
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Value.GetValue('name')}" />
<GridViewColumn Header="Type" DisplayMemberBinding="{Binding Value.GetValue('type')}" />
</GridView>
</ListView.View>
</ListView>

我将 ObjectDataProvider 定义为

<ObjectDataProvider x:Key="GetValue"
ObjectType="{x:Type local:RemoteAgent}"
MethodName="GetField">
<ObjectDataProvider.MethodParameters>
<system:String>empty</system:String>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>

现在我绑定(bind)到 OjbectDataProvider 如下:

<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Source={StaticResource GetValue}, BindsDirectlyToSource=True, Mode=OneWayToSource}" />

我的问题是如何将参数传递给 GetValue 函数。

最佳答案

我认为您可以通过编写继承 DynamicObject 的类来实现您的目标。您应该在实现中覆盖的方法是 TryGetMember。

Here例如。一般来说,您将函数调用“模拟”到动态对象中,您的情况下的 XAML 将如下所示:

<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Value.ID}" />

其中 Value 是动态对象实例的路径。

另一种方法是使用 IValueConverter,通过 ConverterParameter 传递参数。

假设您已将 ValueConverter 添加到您的资源中,代码将如下所示:

<GridViewColumn Header="ID" DisplayMemberBinding="{Binding Value,Converter={StaticRessource myConverter,ConverterParameter=ID}}" />

请记住,ConverterParameter 不是 DependencyProperty,因此您不能绑定(bind)到它。

关于wpf - 使用参数将 WPF GridViewColumn 绑定(bind)到方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35072852/

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