我有一个用户控制的文本块,该用户控制使用转换器显示图形。该转换器在应用程序开始时将加载到ResourceDictionary中。现在,我想将此转换器与另一个转换器交换,以显示其他格式,具体取决于应用程序安装中的参数。不幸的是使用触发器不起作用。是否可以动态加载转换器到用户控制中,并从文本块上放置引用?

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

<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>
有帮助吗?

解决方案

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top