Meh*_*rad -1 c# wpf templates triggers
我有一个Label在我的ControlTemplate,我想如果一个触发器发生改变它的内容。我尝试了许多不同的方法,但到目前为止还没有运气。这是我到目前为止可以更改的外观,但是不能更改Content
<Style x:Key="PartOptionsItemStyle" TargetType="{x:Type ListViewItem}" BasedOn="{StaticResource InnerListViewItemsStyle}">
<Style.Setters>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListViewItem}">
<Border>
<Grid>
<Label x:Name="OptionPrice" HorizontalAlignment="Right" Content="{Binding Path=PriceDom}" ContentStringFormat="{}{0:C}" >
<Label.Resources>
<Style TargetType="{x:Type Label}">
<Style.Triggers>
<DataTrigger Binding="{Binding Path=PriceDom}" Value="0">
<Setter Property="Foreground" Value="Red"></Setter>
<Setter Property="Background" Value="Black"/>
<Setter Property="TextBlock.Text" Value="Free" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Resources>
</Label>
</Grid>
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style.Setters>
</Style>
Run Code Online (Sandbox Code Playgroud)
我最初尝试使用如下代码编写此代码,ControlTemplate.Triggers但它甚至没有影响外观。
<ControlTemplate.Triggers>
<Trigger SourceName="OptionPrice" Property="Content" Value="0">
<Setter Property="Foreground" Value="Red" />
</Trigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)
你会怎么做,你会怎么做?
Label没有Text属性,您已Content直接在Label上进行设置。如下更新您的xaml
<Label x:Name="OptionPrice" HorizontalAlignment="Right" ContentStringFormat="{}{0:C}" >
<Label.Style>
<Style TargetType="{x:Type Label}">
<Setter Property="Content" Value="{Binding Path=PriceDom}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Path=PriceDom}" Value="0">
<Setter Property="Foreground" Value="Red"></Setter>
<Setter Property="Background" Value="Black"/>
<Setter Property="Content" Value="Free" />
</DataTrigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
Run Code Online (Sandbox Code Playgroud)