簡體   English   中英

基於TextBlock.Text屬性的條件樣式?

[英]Conditional style based on TextBlock.Text Property?

我正在嘗試根據Text屬性有條件地設置文本塊的格式,但無法正常工作:

<Style x:Key="StatusEnumTextStyle" TargetType="TextBlock" >
    <Style.Triggers>
        <DataTrigger Binding="{Binding Text}" Value="InProgress">
            <Setter Property="Foreground" Value="Red" />
        </DataTrigger>
    </Style.Triggers>
</Style>

<TextBlock Text="InProgress" Style="{StaticResource StatusEnumTextStyle}"/>

但是我收到一個綁定錯誤:

System.Windows.Data Error: 40 : BindingExpression path error: 'Text' property not found on 'object' ''NotifierViewModel' (HashCode=43600526)'. BindingExpression:Path=Text; DataItem='VM' (HashCode=43600526); target element is 'TextBlock' (Name=''); target property is 'NoTarget' (type 'Object')

好吧,我看到觸發器嘗試獲取String.Text,但是如何為觸發器使用TextBlock的屬性?

背景:基本上,我希望基於一個名為“ StatusEnum”的枚舉的條件樣式,但不依賴於更改的變量名,因為如果一個人期望一個名為“ CurrentStatusEnum”的變量,而另一個變量是var名稱,則我將需要兩種相似的樣式不同,例如“ NewStatusEnum”。 借助匹配“文本”之類的屬性,每當我使用TextBlock時,我都可以使用相同的樣式

如下更新您的DataTrigger綁定:

<Style.Triggers>
    <DataTrigger Binding="{Binding Text, RelativeSource={RelativeSource Self}}" Value="InProgress">
        <Setter Property="Foreground" Value="Red" />
    </DataTrigger>
</Style.Triggers>

暫無
暫無

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

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