我在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>