动态替换文本转换器

时间:2013-11-08 09:04:11

标签: wpf

我有一个用户控件的文本块,它使用转换器来显示数字。此转换器在应用程序启动时加载到ResourceDictionary中。 现在我想将此转换器与另一个转换器进行交换,以显示不同的格式,具体取决于应用程序设置中的参数。仅使用触发器的Unfortunatley不起作用。是否可以将转换器动态加载到用户控件中,并从文本块中对其进行引用?

编辑:这是我的触发器尝试:

<TextBlock>
       <TextBlock.Style>
                <Style>
                     <Style.Triggers>
                      <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type mycontrol}, AncestorLevel=1}, Path=mode}" Value="0">
                            <Setter Property="TextBlock.Text" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type cg:Fader}, AncestorLevel=1}, Path=Figure, Converter={StaticResource ConverterA}}"/>
                      </DataTrigger>
                      <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type mycontrol}, AncestorLevel=1}, Path=mode}" Value="1">
                            <Setter Property="TextBlock.Text" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type cg:Fader}, AncestorLevel=1}, Path=Figure, Converter={StaticResource ConverterB}}"/>
                      </DataTrigger>
                      </Style.Triggers>
                 </Style>
         </TextBlock.Style>
</TextBlock>

1 个答案:

答案 0 :(得分:1)

触发器在您的示例中不起作用的原因在于绑定。总体Style + DataTriggers非常适合动态模板选择。