【问题标题】:How to proper bind action for view model when invoking Event Selected in TreeViewItem (CaliburnMicro)调用 TreeViewItem (CaliburnMicro) 中选择的事件时如何正确绑定视图模型的操作
【发布时间】:2015-04-24 08:46:06
【问题描述】:

我在使用 TreeViewItem 在 XAML 中调用操作时遇到问题。我的 XAML 如下:

    <TreeView Name="SystemNodes" ItemsSource="{Binding FirstGeneration}" Margin="0,0,0,0" HorizontalAlignment="Left" Grid.Row="1" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
        <TreeView.ItemContainerStyle>
            <Style TargetType="{x:Type TreeViewItem}">
                <Setter Property="cal:Message.Attach" Value="[Event Selected] = [Action SendMyText]"/>
            </Style>
        </TreeView.ItemContainerStyle>

当我运行此代码时,我得到异常方法 SendMyText 未找到。但另一方面,在同一视图中,我有以下代码:

     <StackPanel Grid.Row="4">
        <TextBox Text="{Binding Path=MyText, Mode=TwoWay}"/>
        <Button Content="Click me" cal:Message.Attach="[Event Click] = [Action SendMyText]"/>
    </StackPanel>

在这里它起作用了。如果第二种方法可以,为什么第一种方法不起作用?

【问题讨论】:

    标签: c# wpf xaml caliburn.micro caliburn


    【解决方案1】:

    不要使用TreeView.ItemContainerStyle,而是将其替换为:

    <i:Interaction.Triggers>
        <i:EventTrigger EventName="SelectedItemChanged">
            <cal:ActionMessage MethodName="SendMyText" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
    

    【讨论】:

    • 我几乎可以肯定我试过了,但它不起作用。但确实这是正确的解决方案。谢谢它像我一样工作!
    猜你喜欢
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多