c# - 如何将当前行 "This"作为转换器参数传递

标签 c# wpf valueconverter

所以我有一个 View ,包含一个 telerik RadGridView,这个 View 绑定(bind)到几个项目,但重要的是我需要将一个项目在一列中的可见性绑定(bind)到 2 个项目。

转换器将正确评估可见性,但是我需要传回 previousProc(当前已处理)以及也是一个过程的“This”,只是那一行。

    <telerik:RadGridView Name="ProcedureGrid"
                         DockPanel.Dock="Left"
                         SelectionMode="Single"
                         SelectionUnit="FullRow"
                         ItemsSource="{Binding Procedures}"
                         IsReadOnly="True"
                         AutoGenerateColumns="False"
                         ShowGroupPanel="False"
                         ShowColumnHeaders="False"  
                         CanUserReorderColumns ="False"
                         RowIndicatorVisibility="Collapsed"
                         Visibility="Collapsed"
                         Width="200"
                         FontSize="18"
                         SelectionChanged="ProcedureGrid_SelectionChanged"
                         >
        <telerik:RadGridView.Columns>
            <telerik:GridViewDataColumn Header="Name"
                                        AllowDrop="False"
                                        DataMemberBinding="{Binding Converter={StaticResource langConverter}}"
                                        IsGroupable="False" 
                                        IsFilterable="False"
                                        MaxWidth="155"/>
            <telerik:GridViewColumn>
                <telerik:GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <nav:SmallForwardNavigateIcon MaxWidth="30" DockPanel.Dock="Right" Margin="1"
                                                      Cursor="Hand" VerticalAlignment="Center" HorizontalAlignment="Center" 
                                                      MouseDown="SmallForwardNavigateIcon_MouseDown" 
                                                      Visibility="{Binding RelativeSource={RelativeSource FindAncestor, 
                                                                                            AncestorType={x:Type UserControl}}, 
                                                                                            Path=DataContext.previousProc, 
                                                                                            Converter={StaticResource IsPrevProc}}" />
                    </DataTemplate>
                </telerik:GridViewColumn.CellTemplate>
            </telerik:GridViewColumn>
        </telerik:RadGridView.Columns>
    </telerik:RadGridView>

谁能看到我哪里出错了,我能做些什么来修复 xaml 以将 previousproc 和 This 传回

最佳答案

如果我了解您的 UserControl 托管一个 telerik:RadGridView 控件。

您的 UserControl 有一个给定的 DataContext,它似乎包含一个属性 Procedures 和一个属性 IsPrevProc。

Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}},Path=DataContext.previousProc,Converter={StaticResource IsPrevProc}}" />

这段代码似乎是错误的,因为你写了:

Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}

这意味着您正在寻找您的祖先 DataContext 中的属性,即包含 Procedures 和 IsPrevProc 的属性。因此,此处的所有绑定(bind)都必须具有此 DataContext 的属性。您不能将一个绑定(bind)调用混入不同的 DataContext。

您可以做的是创建您的“previousProc”作为此 DataContext 中的一个属性,以便您可以直接调用它。

或者您可以将“IsPrevProc”定义为 Grid 一行的 DataContext 的属性。

但您不能在同一个绑定(bind)中同时执行这两项操作。

关于c# - 如何将当前行 "This"作为转换器参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35558196/

相关文章:

c# - 如何用c#代码创建LongListSelector?

c# - 使用过滤器将一个集合绑定(bind)到多个选项卡

wpf - MVC/MVP/MVVM 什么鬼?

wpf - 带有西藏绑定(bind)的MVVMCross WPF值转换器不转换?

c# - EF Core - 用于简单 ValueObject 的 ValueConverter 或 OwnedType?

c# - 为什么 Telerik DropDown List 在使用 ajax 数据绑定(bind)时没有任何值?

c# - 过滤器需要通过引用传递才能附加到它

c# - 如何从表单中删除调整大小指示器(右下角的灰线)?

wpf - ViewModel 每个 View 还是每个模型?

c# - 值转换器。强制 WPF 只调用一次