Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF将CommandParameter绑定到perent窗口的元素_C#_Wpf_Commandparameter - Fatal编程技术网

C# WPF将CommandParameter绑定到perent窗口的元素

C# WPF将CommandParameter绑定到perent窗口的元素,c#,wpf,commandparameter,C#,Wpf,Commandparameter,我构建了一些WPF应用程序,作为MainView,在这个MainView中我有一个按钮,可以打开一个设置窗口和一个模型,我希望能够在这个设置视图中显示或隐藏它。(显示/隐藏按钮最初位于MainView本身)问题在于我不知道如何使用SettingsView中的CommandParameter绑定到MainView中的元素 主视图中的元素: <Dev:DevUnitView x:Name="DevData" DataContext="{Bindin

我构建了一些WPF应用程序,作为MainView,在这个MainView中我有一个按钮,可以打开一个设置窗口和一个模型,我希望能够在这个设置视图中显示或隐藏它。(显示/隐藏按钮最初位于MainView本身)问题在于我不知道如何使用SettingsView中的CommandParameter绑定到MainView中的元素

主视图中的元素:

        <Dev:DevUnitView x:Name="DevData" DataContext="{Binding MainModel.DevUnit}" Visibility="Visible" Margin="994,656,74,-83"/>
   <Button Content="DEV" Command="{Binding Settings.DevVisibilityCommand}" CommandParameter="{Binding ElementName=DevData}" Margin="406,359,810,259"/>
在这种情况下,它无法解析数据上下文中的“DevUnit”,我还尝试了名称和其他变体,但没有成功

在主视图中工作的旧按钮:

        <Dev:DevUnitView x:Name="DevData" DataContext="{Binding MainModel.DevUnit}" Visibility="Visible" Margin="994,656,74,-83"/>
   <Button Content="DEV" Command="{Binding Settings.DevVisibilityCommand}" CommandParameter="{Binding ElementName=DevData}" Margin="406,359,810,259"/>


现在,无论我如何绑定它,我都会得到Null UserControl。

旧按钮(通过
{Binding ElementName=DevData}
)获取DevUnitView作为CommandParameter,而“setingsview中的按钮”则获取setingsview的可选DevUnitView祖先的
数据上下文
对象。这是两件完全不同的事情。DevUnitView是SettingsView可视化树中的祖先吗?为什么是DataContext?@Clemens不,它不是,MianView是SettingsView a可视化树中的一个祖先,“DevUnitView”作为DataContext绑定到MainView。您应该尝试通过尝试使用XAML编写的任何东西来理解WPF不是您可以掌握的东西。阅读基本概念是必要的,也是不可避免的。第一个或第二个CommandParameter绑定似乎都没有意义。如果您在code behind中打开一个新的SettingsView窗口,您可以在显示该窗口之前简单地设置其DataContext,例如,像
SettingsView.DataContext=SomethingSensive。但是,我们不知道您正试图使用什么作为SettingsView的DataContext。@Clemens我想发送一个不在我的SettingsView中但位于不同视图上的视图,是否有任何合理的方法可以做到这一点?@Clemens如果有帮助,我在这个项目中也使用Prism