这是带有转换器的TextBox:
<TextBox Text="{Binding TimbraturaSelezionata.OrarioMinuti, Converter={StaticResource Minuti2HHmmConverter}}" Margin="5,0"/>
我只是在有效需要时才搜索设置或更改转换器的方法。 实际上,我想将TextBox放在通用用户控件中,并仅在满足特定条件时应用转换器。 我想到的唯一解决方案是使用 ContentControl 并使用两个 DataTrigger 来设置其模板,一个在TextBox中使用Converter,另一个没有。我希望找到一种更清晰的方法来实现我的目标。
感谢您的任何建议。
答案 0 :(得分:0)
因为你设置了一个触发器。这是一个例子。希望它有所帮助;
<TextBox x:Name="MyTextBox" Text="{Binding TimbraturaSelezionata.OrarioMinuti}" Margin="5,0">
<i:Interaction.Triggers>
<ei:DataTrigger Value="False"
Binding="{Binding YourCondition, ElementName=MyTextBox}">
<ei:ChangePropertyAction PropertyName="Text"
Value="{Binding TimbraturaSelezionata.OrarioMinuti}" />
</ei:DataTrigger>
<ei:DataTrigger Value="True"
Binding="{Binding YourCondition, ElementName=MyTextBox}">
<ei:ChangePropertyAction PropertyName="Text"
Value="{Binding TimbraturaSelezionata.OrarioMinuti, Converter={StaticResource Minuti2HHmmConverter}}" />
</ei:DataTrigger>
</i:Interaction.Triggers>
</TextBox>
答案 1 :(得分:0)
另一个有效的解决方案如下:
<TextBox Width="100">
<TextBox.Style>
<Style TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding ValoreInMinuti}" Value="True">
<Setter Property="Background" Value="Red" />
<Setter Property="Text" Value="{Binding Quantita, Converter={StaticResource Minuti2HHmmConverter}}" />
</DataTrigger>
<DataTrigger Binding="{Binding ValoreInMinuti}" Value="False">
<Setter Property="Background" Value="Yellow" />
<Setter Property="Text" Value="{Binding Quantita}" />
</DataTrigger>
</Style.Triggers>
</Style>
</TextBox.Style>
</TextBox>
请注意,Text属性仅通过DataTrigger设置。在我的具体情况下,我只有两种可能性,一种是转换器,另一种是不带转换器。