Caliburn。不同视觉树之间的微动作绑定

时间:2019-06-05 11:46:51

标签: c# wpf mvvm caliburn.micro wpftoolkit

我正在使用WPFToolkit的DropDownButton显示一个小的编辑器,其中包含一个按钮,该按钮用于通过VM中的一种简单方法清除编辑器的字段。该方法只需要调用即可,无需传递任何参数。

主要问题是DropDownButton使用弹出窗口显示其DropDownContent(编辑器),并且该弹出窗口位于其他VisualTree上。我似乎无法到达原始树以使用Action.TargetWithoutContext调用该方法。

我已经看到了此类问题的解决方案,但主要围绕ContextMenus并使用

Action.TargetWithoutContext="{Binding Path=PlacementTarget.Tag, RelativeSource={RelativeSource Self}}"

我尝试将TargetWithoutContext的绑定路径更改为父DropdownButton(当然,将其命名),尝试使用AncestorType和不同的RelativeSources,但是我对Caliburn.Micro的了解或调试这类问题不幸的是还不够广泛解决这个问题。

视图,省略任何不相关的控件和样式:

        <ListView x:Name="FIS"
                  ItemsSource="{Binding}"
                  SelectedItem="{Binding Path=FISSelected, Mode=TwoWay}"
                  dd:DragDrop.IsDragSource="True">

            <ListView.View>
                <GridView>

                    <GridViewColumn Header="ColumnHeader">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <wpfTool:DropDownButton>
                                    <wpfTool:DropDownButton.Content>
                                        <TextBlock Text="{Binding}">
                                    </wpfTool:DropDownButton.Content>
                                    <wpfTool:DropDownButton.DropDownContent>
                                        <StackPanel>
                                            <Label/>
                                            <DockPanel>
                                                <Button x:Name="ClearFields" Content="Clear"
                                                        cal:Message.Attach="[Event Click] = [Action Clear]"
                                                        cal:Action.TargetWithoutContext="???"/>
                                            </DockPanel>
                                        </StackPanel>
                                    </wpfTool:DropDownButton.DropDownContent>
                                </wpfTool:DropDownButton>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                </GridView>
            </ListView.View>

        </ListView>

到目前为止,我得到的是 System.Exception:“未找到方法INDClear的目标。” 调用该方法时发生错误:

System.Windows.Data错误:4:找不到参考 [TargetWithoutContext参考参数] 的绑定源。 WindowsBase.dll中发生了'System.Exception'类型的未处理异常 找不到方法“清除”的目标。

0 个答案:

没有答案