考虑以下2个XAML代码段(在文件中并排):
<Button
x:Name="BuyButton"
Margin="0,0,1,1"
IsEnabled="{Binding CanBuy}"
>
<StackPanel
DataContext="{Binding Product}">
<TextBlock
Foreground="Red"
Text="BUY" />
<TextBlock
Foreground="Red"
Text="{Binding BuyPrice}" />
</StackPanel>
</Button>
<Button
x:Name="SellButton"
Margin="0,0,1,1"
IsEnabled="{Binding CanSell}"
>
<StackPanel
DataContext="{Binding Product}">
<TextBlock
Foreground="Red"
Text="SELL" />
<TextBlock
Foreground="Red"
Text="{Binding SellPrice}" />
</StackPanel>
</Button>
Run Code Online (Sandbox Code Playgroud)
如何消除WPF中的重复项?我有大约4种用法(这里显示2种),它们的相似度是80%,甚至更多。我可以将其提取到用户控件中,并在其中放置一些DP,然后我将拥有一个控件,但是我担心我会开始用大量的用户控件来填充我的代码库(我有很多“一次性的” “这样的情况)。我不喜欢这里的DataTemplate解决方案,因为我仍然需要两个模板,这些模板将有重复的代码。如果不创建一堆模板/控件,是否有办法使此代码遵循DRY?
我没有其他解决方案,但我不同意你关于一次性控制的论点。在我看来,这可以归结为在大量重复代码或较少重复以及许多非常具体的控制之间进行选择。如果这是纯代码,那么在面对多个相同代码块时,您可能不会三思而后行地执行提取方法,为什么该代码现在是 XAML 的事实会让您的决定有所不同?