我有第三方控制权。我想为此控件添加一些特定的行为,这些行为可以重复使用到我的项目的任何部分。当然,自定义控制是可行的选择。但是,我不确定在自定义控件上提供新转换器的最佳方法是什么,它是在现有控件的基础上构建的。有人可以帮帮我吗?
我试图覆盖的控件属于第三方,我想为其控件在其DataTemplate中使用的ItemControl之一提供Converter。我可以很容易地确定我需要在XAML中指定新转换器的位置,但是如何通过代码指定这个以创建自定义控件令我望而生畏。对我来说,挑战在于如何在代码中获取绑定属性。对于所有客户端,转换器将保持静态,但字符串将作为转换器参数传递,我想通过每个引用代码提交。
以下是DataTemplate的代码片段 -
<DataTemplate x:Key="{themes:PdfViewerThemeKey ResourceKey=PdfPrintEditorTemplate}">
<Grid>
<dxlc:DockLayoutControl x:Name="PART_DockLayoutControl" AllowItemSizing="True" Margin="5">
<dxlc:LayoutGroup x:Name="PART_DockPreviewPart" Orientation="Vertical" dxlc:DockLayoutControl.Dock="Left" Margin="5" Width="427">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<dxe:ImageEdit x:Name="PART_ImagePreview" ShowMenu="False" Grid.Row="0" Margin="0,0,0,10" EditValue="{Binding Path=PdfViewModel.PreviewImageBytes, UpdateSourceTrigger=PropertyChanged, Mode=OneWay}" Width="427" Height="518"/>
</Grid>
</dxlc:LayoutGroup>
<dxlc:LayoutGroup x:Name="PART_DockClientPart" ItemLabelsAlignment="Local" MinWidth="425" Margin="5" Orientation="Vertical" dxlc:DockLayoutControl.Dock="Client" dxlc:DockLayoutControl.AllowHorizontalSizing="True">
<dxlc:LayoutItem Label="{Binding Source={x:Null}, Converter={StaticResource PdfViewerStringIdConverter}, ConverterParameter=PrintDialogPrinterName}" AddColonToLabel="True">
<dxlc:LayoutGroup Orientation="Horizontal">
<dxlc:LayoutItem VerticalContentAlignment="Center" VerticalAlignment="Center">
<dxe:ComboBoxEdit Margin="5,0,0,0" ItemsSource="{Binding Path=PdfViewModel.PrinterItems}" ApplyItemTemplateToSelectedItem="True" IsTextEditable="False" SelectedIndex="{Binding Path=PdfViewModel.PrinterIndex}">
<dxe:ComboBoxEdit.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<dxe:ImageEdit ShowBorder="False" Source="{Binding Path=PrinterType, Converter={StaticResource printerTypeToImageConverter}}"/>
<TextBlock VerticalAlignment="Center" Margin="2,2,4,2" Text="{Binding Path=DisplayName}"/>
</StackPanel>
</DataTemplate>
</dxe:ComboBoxEdit.ItemTemplate>
</dxe:ComboBoxEdit>
</dxlc:LayoutItem>
</dxlc:LayoutGroup>
</dxlc:LayoutItem>
</dxlc:LayoutGroup>
</dxlc:DockLayoutControl>
</Grid>
</DataTemplate>
请告诉我实施此方法的最佳方法。