簡體   English   中英

Caliburn.Micro中的DataGrid AutoGeneratingColumn操作

[英]DataGrid AutoGeneratingColumn Action in Caliburn.Micro

我不確定如何使用WPF中的Caliburn.Micro Actions來連接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>

VS

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

這不起作用,因為Caliburn.Micro利用System.Windows.Interactivity為它的觸發機制,並且該技術不適用於AutoGeneratingColumn事件,因為它不是RoutedEvent或RoutedUIEvent,它是一個普通的.NET事件。

要解決此問題,您可以在視圖的代碼隱藏文件中處理該事件。

在相關的說明中,使用Action Parameters與Message.Attach方法之間是否存在明顯差異?

后一種技術,即Message.Attach技術是為那些手工使用XAML密集工作的人發明的,因此他們不會輸入很多東西。

第一種技術,你稱之為動作參數的技術可以由像Microsoft Expression Blend這樣的設計者通過拖放自動生成,所以如果你是一名設計師,你會喜歡這個。

無論如何,Message.Attach技術由Caliburn.Micro自動轉換為等效的Action Parameters技術。

您已附加如下方法

在視圖中:

的AutoGenerateColumns = “真”
cal:Message.Attach =“[EventAutoGeneratingColumn] = [Action ModifyDataGridColumn($ this,$ eventargs)];”

在Viewmodel中:

public void ModifyDataGridColumn(object sender,DataGridAutoGeneratingColumnEventArgs e){

}

這僅在AutoGenerate Columns為true時有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM