XAML 尝试从派生类向GridViewDataColumn添加筛选器

bogh5gae  于 2023-11-14  发布在  其他
关注(0)|答案(1)|浏览(99)

因此,我有以下场景A RadGridView与绑定列表
这是我的XAML

<telerik:RadGridView 
   x:Name="grid" 
   Grid.Row="0"
   ItemsSource="{Binding BaseClassesList}"
   IsFilteringAllowed="True"
   IsReadOnly="true">
   
   <telerik:RadGridView.Columns>
      <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" />
      <telerik:GridViewDataColumn>
         <DataTemplate DataType="{x:Type DerivedClass}">
            <TextBlock Text="{Binding WhatIWant}"/>
         </DataTemplate>
      </telerik:GridViewDataColumn>
   </telerik:RadGridView.Columns>

</telerik:RadGridView>

字符串
这是我的ViewModel

public List<BaseClass> BaseClassesList {get;set;}


这是我的基类

public class BaseClass
{
   public string Name{ get; set; }
   public string Filler1{ get; set; }
   public string Filler2{ get; set; }
}


这是我的DerivedClass

public class DerivedClass : BaseClass
{
   public string WhatIWant{ get; set; }
}


如您所见,我绑定到一个BaseClass列表,一切正常,我可以获得所有想要的信息。但是,由于我访问的是BaseClass列表而不是DerivedClass,GridViewDataColumn无法发挥其魔力并允许列过滤器工作。漏斗图标/按钮未出现。除此过滤器功能外,所有信息都正确显示在网格中
我试着定义数据模板,数据路径,过滤标志,到目前为止什么都没有。

w6mmgewl

w6mmgewl1#

所以,在经历了大量的撞墙和砸石头之后,我终于找到了一个解决方案。但在此之前,为了简单起见,我之前没有说的是,我有一个第三个派生类,我想访问的是它

public class DerivedDerivedClass : DerivedClass 
{
    public string WhatIWant{ get; set; } //Removed from here
}

字符串
第一件事是把我想访问的东西移到基类的第一个派生中

public class DerivedDerivedClass : DerivedClass 
{
    public string WhatIWant{ get; set; } //Removed from here
}
public class DerivedClass : BaseClass 
{
    public string WhatIWant{ get; set; } //Placed here
}


在XAML网格中,我必须将DataType和FilterPath添加到列中。

<telerik:RadGridView.Columns>
    <telerik:GridViewDataColumn DataMemberBinding="{Binding Name}" />
    <telerik:GridViewDataColumn DataType="{x:Type DerivedClass}" FilterMemberPath="WhatIWant">
        <DataTemplate DataType="{x:Type DerivedClass}"> //DataType should not be defined here
            <TextBlock Text="{Binding WhatIWant}"/>
        </DataTemplate>
    </telerik:GridViewDataColumn>
</telerik:RadGridView.Columns>

相关问题