[英]How to Bind an another Control on the Setter Value Property by using a Trigger?
[英]Bind trigger value to a property
我正在嘗試設置一個觸發器,所以如果兩個值匹配發生顏色變化,當匹配的東西是靜態的並且可以直接放入xaml時這很容易,但是當要比較的東西是動態的時候很容易,例如屬性。 反正基本上是將觸發器的值綁定到屬性?
示例 - 錯誤表示值無法使用綁定。 這讓我認為價值必須是靜態的。
<TextBlock Name="MyTextBlock" Text="{Binding someProp}">
<TextBlock.Resources>
<Style TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyTextBlock, Path=Text}" Value="{Binding someOtherProperty}">
Do some stuff here
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Resources>
</Textblock>
編輯:將其更新為數據觸發器,但問題仍然存在。
為此,您可以使用DataTriggers
,如下面的示例所示( TextBlock
名為txtBlock
顏色更改取決於值“R”或“N”):
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=txtBlock,Path=Text}" Value="R">
<Setter Property="Background" Value="#f9f9f9" />
<Setter Property="Foreground" Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=txtBlock,Path=Text}" Value="N">
<Setter Property="Background" Value="Yellow" />
<Setter Property="Foreground" Value="Black" />
</DataTrigger>
</Style.Triggers>
解決方案適用於條件中使用的任何有限數據集。 對於更復雜的條件(例如條件塊中使用的變量等),您可以在代碼隱藏中實現值轉換器和綁定,如示例中所示: 在WPF DataTrigger值中綁定 。 此外,您可以將MultiDataTrigger
或DataTrigger
與MultiBinding
一起考慮(re: MultiDataTrigger與DataTrigger with multibinding )。
希望這可能有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.