簡體   English   中英

在 WPF XAML 中使用自定義類作為 ItemsControl 標簽?

[英]Using custom class as ItemsControl Tag in WPF XAML?

我有一個用 ASP.NET 和 React 構建的 Web 應用程序。 我正在嘗試將一些組件移植到 Windows WPF 應用程序,這是我第一次使用 WPF/XAML。 我對 XAML 的體驗還不錯......它就像一個更詳細的 React,但我無法弄清楚如何正確做的一件事是將綁定參數從嵌套列表保存到 ItemsControl。

在 React 中,我會使用類似onClick="(e)=>this.myFunction(e, parentIndex)" 的東西,這樣我就可以一次發送 2 個參數,可能代表一個索引和一個值,或者一個 childIndex 和 parentIndex , 等等。

我不清楚如何使用 WPF 的 XAML 風格和一般的 XAML 正確執行此操作。 從我讀過的內容來看,我必須使用 ICommand(我覺得這有點矯枉過正,因為我使用的參數通常不是用戶輸入,而是對后端其他對象的引用)或設置將初始對象(按鈕)的標記添加到具有我需要的屬性數量的自定義類。

第二種方法對我來說似乎更明智,但我無法弄清楚如何使用 XAML 前端的 ItemsControl 動態執行此操作 - 我在代碼隱藏中看到的所有教程都是這樣做的,我認為這是不可能的因為我正在使用 ItemsControl。

我怎樣才能做到這一點?

您可以通過 CommandParameter 將項目傳遞給命令。 對於向 mouseEvents 分配命令,您可以使用 InputBindings。

讓我們假設您有帶有命令的 ViewModel

public ICommand SomeClickCommand {get; private set}

public void SomeCLickCOmmandHandler (object parameter)
{
      var yourItem = object as SomeItemType;
}

您可以將項目分配給 DataTemplate 中的命令

<DataTemplate TargetType={x:Type someItemType}>
    <Border>
       <Border.InputBindings>
               <MouseBinding Command="{Binding Path=DataContext.SomeClickCommand , RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}, Mode=FindAncestor}}"
                   CommandParameter="{Binding}"
                   Gesture="LeftDoubleClick" />
        </Border.InputBindings>

        <TextBlock Text={Binding SomeProperty} />
     </Border>
</DataTemplate>

暫無
暫無

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

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