gpt4 book ai didi

wpf - 没有框架的复合 WPF 模块中的命令处理

转载 作者:行者123 更新时间:2023-12-03 10:40:26 24 4
gpt4 key购买 nike

我在需要创建复杂 UI 的应用程序中做一个模块。由于复杂性,我决定对 UI 使用用户控件。

由于这种复合性质,我面临一些挑战。有一个用户控件可以包含另一个用户控件。

<MainWindow>

<UserSelectionUserControl>
<Button Command="SelectFirstChild/>
<Button Command="SelectSecondChild/>
<Button Command="SelectThirdChild/>
</UserSelectionUserControl>


<MainUserControl>
<ChildUserControl/>
</MainUserControl>

</MainWindow>

有几个 ChildUserControls。在运行时,我必须根据用户按钮单击在 MainUserControl 中附加 ChildUserControl。

我的问题是 - 我怎样才能有效地进行消息传递?我不能使用事件聚合/统一,因为我只是在一个大型应用程序中做一个模块。我可以使用 RoutedCommand ,但是否可以使用命令传递参数。例如,所有按钮都会触发相同的命令,并带有一些唯一标识单击的按钮的字符串值?

最佳答案

是的,您可以在命令中使用参数。在 UserControls 声明中,使用 CommandParameter 属性绑定(bind)或定义要发送到命令的数据。您的 Command 声明必须提供一个按值传递的对象。

<Button Content="Browse" Command="{Binding BrowseCommand}" CommandParameter="Image"/>

-或者-
<Button Content="Browse" Command="{Binding BrowseCommand}" CommandParameter="{Binding SelectedItem, ElementName=listBox}"/>

在我试图限制框架使用的应用程序中,我使用 MVVMFoundation ,我的命令属性和命令方法如下所示:
 Private _cmdBrowseCommand As ICommand
Public ReadOnly Property BrowseCommand() As ICommand
Get
If _cmdBrowseCommand Is Nothing Then
_cmdBrowseCommand = New RelayCommand(Of Object)(AddressOf BrowseExecute)
End If
Return _cmdBrowseCommand
End Get

End Property

Private Sub BrowseExecute(ByVal param As Object)
If TypeOf(param) is PannableImage Then
'Code removed for brevity
End If
End Sub

关于wpf - 没有框架的复合 WPF 模块中的命令处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329407/

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