[WPF系列]-資料邦定之DataTemplate 使用 DataTrigger 來應用屬性值

來源:互聯網
上載者:User

標籤:style   blog   http   ar   io   color   os   使用   sp   

使用 DataTrigger 來應用屬性值

當前表示不會告訴我們某個 Task 是家庭任務還是辦公室任務。記住 Task 對象擁有類型為 TaskType 的 TaskType 屬性,該類型是一個枚舉,其值可以為 Home 和 Work。

在下面的樣本中,DataTrigger 將 border 元素的 BorderBrush 設定為 Yellow(如果 TaskType 屬性為 TaskType.Home)。

 

<DataTemplate x:Key="myTaskTemplate">...<DataTemplate.Triggers>  <DataTrigger Binding="{Binding Path=TaskType}">    <DataTrigger.Value>      <local:TaskType>Home</local:TaskType>    </DataTrigger.Value>    <Setter TargetName="border" Property="BorderBrush" Value="Yellow"/>  </DataTrigger></DataTemplate.Triggers>...</DataTemplate>

 

家庭任務的邊界顯示為黃色,辦公室任務的邊界顯示為淺綠色。

 

在此樣本中,DataTrigger 使用 Setter 來設定屬性值。觸發器類也擁有 EnterActions 和 ExitActions 屬性,這些屬性允許您開始一組操作,例如動畫操作。而且,還有一個MultiDataTrigger 類,它允許您根據多個資料繫結屬性值應用更改。

 

就效能而言,使用轉換器建立上述效果的效率要高一點。 另外,建立自己的轉換器使您可以獲得更多的靈活性,因為您提供的是自己的邏輯。 最後,您選擇的技術取決於您當時的具體情況和您的偏好。 有關如何編寫轉換器的資訊,請參見IValueConverter。

 

DataTemplate 中有哪些內容?

在前面的樣本中,我們使用 DataTemplate.Triggers 屬性將觸發器放入 DataTemplate 中。 觸發器的 Setter 設定 DataTemplate 中元素(Border 元素)的屬性值。 但是,如果您的 Setters 相關屬性不是當前 DataTemplate 中元素的屬性,則使用 Style(用於 ListBoxItem 類)設定屬性更合適(如果您要綁定的控制項是 ListBox)。 例如,如果您想要在滑鼠指向某一項時讓您的 Trigger 對該項的 Opacity 值進行動畫處理,則需要在 ListBoxItem 樣式中定義觸發器。 有關樣本,請參見 Introduction to Styling and Templating Sample(樣式和模板化簡介樣本)。


通常需要注意:DataTemplate 會應用於每個產生的 ListBoxItem(有關它實際應用的方式和場合的更多資訊,請參見 ItemTemplate 頁)。 DataTemplate 僅與資料對象的表示和外觀有關。 在大多數情況下,所有其他表示方面(例如,項在被選中時的外觀或 ListBox 排列項的方式)不在 DataTemplate 定義範圍內。 有關樣本,請參見對 ItemsControl 進行樣式和模板處理一節。

 

 

參考

[WPF系列]-資料邦定之DataTemplate 使用 DataTrigger 來應用屬性值

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.