我在UI中有10个相同类型的UI控件,并且所有将使用相同的多重绑定转换器。WPF MultiBinding具有不同绑定路径的相同转换器
问题是我无法创建多重绑定的通用样式,我可以将其应用于所有UI控件以避免重复的代码,因为每个控件都将使用不同的绑定属性作为绑定转换器。
有什么办法可以在WPF中避免这种情况下的重复代码?
我在UI中有10个相同类型的UI控件,并且所有将使用相同的多重绑定转换器。WPF MultiBinding具有不同绑定路径的相同转换器
问题是我无法创建多重绑定的通用样式,我可以将其应用于所有UI控件以避免重复的代码,因为每个控件都将使用不同的绑定属性作为绑定转换器。
有什么办法可以在WPF中避免这种情况下的重复代码?
“定制”默认绑定+结合您可以extend MarkupExtension,它允许你定义一个自定义转换器的包装,然后只是把它2条路径。
编辑:在你的情况下,最好直接从MultiBinding继承,并在构造函数中设置合理的默认值。
我假设你有这样的事情:
<Button>
<Button.Content>
<MultiBinding Converter="{StaticResource conv}">
<Binding Path="COMMON" />
<Binding Path="SPECIFIC1" />
</MultiBinding>
</Button.Content>
</Button>
<Button>
<Button.Content>
<MultiBinding Converter="{StaticResource conv}">
<Binding Path="COMMON" />
<Binding Path="SPECIFIC2" />
</MultiBinding>
</Button.Content>
</Button>
<Button>
<Button.Content>
<MultiBinding Converter="{StaticResource conv}">
<Binding Path="COMMON" />
<Binding Path="SPECIFIC3" />
</MultiBinding>
</Button.Content>
</Button>
等等... 这个长相丑陋,我同意。 我不知道有任何替代方法,但通过稍微思考,您可以创建(imo)一个更好的解决方案:
只需创建新的CommonMultiBindings.xaml;其中包括:
<MultiBinding Converter="{StaticResource conv}">
</MultiBinding>
and voila,done。现在只是引用它作为CommonMultiBindings对象,并使用它作为:
<Button.Content>
<CommonMultiBindings>
<!--Actual bindings here-->
</CommonMultiBindings>
</Button.Content>
可以通过分解“”到CommonMultiBindings和增加新的属性(UserBindings)将用于之间的绑定属性来同步采取进一步。
理想情况下,您需要创建一个具有style属性的自定义MultiBinding类。然后,你可以做这样的事情与被自动添加到“绑定”征收
<Grid.Resources>
<Style TargetType="MultiBinding">
<Setter Property="Converter" Value="{StaticResource conv}" />
</Style>
</Grid.Resources>