gpt4 book ai didi

wpf - 用于转换为 MVVM 模式的事件名称

转载 作者:行者123 更新时间:2023-12-03 10:27:49 25 4
gpt4 key购买 nike

我正在将 silverlight 代码转换为 MVVM 模式。

我想知道我正在使用代码的“关闭事件”之类的事件名称。

<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding OnClose}" />
</i:EventTrigger>
</i:Interaction.Triggers>

我想对以下事件执行类似的任务。
  • IsVisibleChanged
  • Windows_SizeChanged
  • webBrowser1_卸载
  • 数据上下文已更改
  • LoadingProgress_Loaded

  • 请帮忙。

    最佳答案

    好吧,我并不自称是 mvvm 方面的专家,但我发现的一种方法如下。

    假设我的表单上有一个文本框,我想在我的 View 模型中处理其 gotFocus 和 Text 更改事件。

    在 xaml 中,我将具有以下内容:

     <ribbon:TextBox x:Name="txtSubmissionSearch" Width="150"  >
    <i:Interaction.Triggers>
    <i:EventTrigger EventName="Loaded">
    <i:InvokeCommandAction Command="{Binding Path=SubmissionSearchTextBoxLoadedCommand}" CommandParameter="{Binding ElementName=txtSubmissionSearch}" />
    </i:EventTrigger>
    </i:Interaction.Triggers>
    </ribbon:TextBox>

    在我的 View 模型中,我为文本框定义了一个私有(private)变量
    Private ersSeachSubmissionTextBox As TextBox

    然后是你真正感兴趣的部分:
    Private _submissionSearchTextBoxLoadedCommand As ICommand
    Public ReadOnly Property SubmissionSearchTextBoxLoadedCommand As ICommand
    Get
    If _submissionSearchTextBoxLoadedCommand Is Nothing Then
    Dim mySubmissionSearchTextBoxLoaded As New Action(Of Object)(AddressOf SubmissionSearchTextBoxLoaded)
    _submissionSearchTextBoxLoadedCommand = New RelayCommand(mySubmissionSearchTextBoxLoaded)
    End If
    Return _submissionSearchTextBoxLoadedCommand
    End Get
    End Property
    Private Sub SubmissionSearchTextBoxLoaded(ByVal obj As Object)
    ersSeachSubmissionTextBox = DirectCast(obj, TextBox)
    AddHandler ersSeachSubmissionTextBox.GotFocus, AddressOf ErsSeachSubGotFocus
    AddHandler ersSeachSubmissionTextBox.TextChanged, AddressOf ErsSearchSubTextChanged
    End Sub
    Private Sub ErsSeachSubGotFocus(ByVal sender As Object, ByVal e As RoutedEventArgs)
    InvokeSubmissionEditorSearch()
    End Sub
    Private Sub ErsSearchSubTextChanged(ByVal sender As Object, ByVal e As TextChangedEventArgs)
    InvokeSubmissionEditorSearch()
    End Sub

    注意:我正在使用 Josh Smith 和其他人所描述的中继命令模式来处理很多这样的问题,但是在其他地方有很多关于这方面的信息可用,而且你很可能自己也在实现它。

    双NB我的 viewModels 通常是我的 Forms/UserControls 的 DataContext。如果您开始动态更改 DataContext,那么您会发现这种方法存在问题。这不是不可克服的,您只需要仔细考虑您的 xaml 布局。

    希望这在某种程度上有所帮助

    关于wpf - 用于转换为 MVVM 模式的事件名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30798029/

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