簡體   English   中英

將觸發器值綁定到屬性

[英]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值中綁定 此外,您可以將MultiDataTriggerDataTriggerMultiBinding一起考慮(re: MultiDataTrigger與DataTrigger with multibinding )。

希望這可能有所幫助。

暫無
暫無

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

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