【问题标题】:DataGrid AutoGeneratingColumn Action in Caliburn.MicroCaliburn.Micro 中的 DataGrid AutoGeneratingColumn 操作
【发布时间】:2013-10-26 07:37:35
【问题描述】:

我不太确定如何使用 WPF 中的 Caliburn.Micro 操作来连接 AutoGeneratingColumn 事件。我尝试以与 [Event Click] = ... 相同的方式进行操作,但无济于事(它不会调用 IDRemover)。任何指导将不胜感激。

查看

<DataGrid x:Name="MyObservableCollection" AutoGenerateColumns="True" cal:Message.Attach="[Event AutoGeneratingColumn] = [Action IDRemover($eventArgs)]"></DataGrid>

视图模型

public void IDRemover(System.Windows.Controls.DataGridAutoGeneratingColumnEventArgs e)
    {
        if (e.PropertyName == "ID")
            e.Cancel = true;
    }

在相关说明中,使用 Action ParametersMessage.Attach 方法之间是否存在明显差异:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Click">
        <cal:ActionMessage MethodName="DoStuff">
            <cal:Parameter Value="{Binding ...}" />
        </cal:ActionMessage>
    </i:EventTrigger>
</i:Interaction.Triggers>

<Button cal:Message.Attach="[Event Click] = [Action DoStuff(...)]" />

【问题讨论】:

    标签: c# wpf mvvm datagrid caliburn.micro


    【解决方案1】:

    您已附加如下方法

    在视图中:

    AutoGenerateColumns="True"
    cal:Message.Attach="[EventAutoGeneratingColumn] = [Action ModifyDataGridColumn($this, $eventargs)];"

    在视图模型中:

    public void ModifyDataGridColumn(对象发送者, DataGridAutoGeneratingColumnEventArgs e) {

    }

    这仅在 AutoGenerate Columns 为 true 时有效。

    【讨论】:

      【解决方案2】:

      这不起作用,因为 Caliburn.Micro 利用 System.Windows.Interactivity 作为触发机制,并且该技术不适用于 AutoGeneratingColumn 事件,因为它不是 RoutedEvent 或 RoutedUIEvent,它是正常的.NET 事件。

      要解决这个问题,您可以在视图的代码隐藏文件中处理事件。

      在相关说明中,使用 Action Parameters 与 Message.Attach 方法之间是否有任何明显的区别?

      后一种技术,即 Message.Attach 技术是为那些手工密集使用 XAML 的人发明的,因此他们不会输入太多。

      第一种技术,您称为动作参数的技术可以由 Microsoft Expression Blend 等设计人员通过拖放自动生成,因此,如果您是一名设计师,您会喜欢它。

      Caliburn.Micro 自动将 Message.Attach 技术转换为等效的 Action Parameters 技术。

      【讨论】:

      • 感谢您的澄清!
      猜你喜欢
      • 2021-01-28
      • 2011-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多