Правильно, поэтому, пройдя некоторое время назад, я понял, что происходит то, что я не определяю, что должно происходить после запятой. Я предположил, что это подразумевалось после первого ДОБАВИТЬ, но, видимо, это не так.
Для тех, кто застрял так же, как и я, проблема, по-видимому, была в следующем:
ALTER TABLE students
ADD allergies VARCHAR(255),
ADD afterSchoolActivities VARCHAR(255);
У меня нет альтернативного решения, но я не соглашаюсь относительно Вашего аргумента одноразовых средств управления. По-моему, это сводится к выбору между большим количеством дублирующего кода или меньшего количества дублирования со многим управлением, которые довольно конкретны. Если бы это было простым кодом, то Вы, вероятно, не думали бы дважды о выполнении метода извлечения, сталкиваясь с несколькими блоками идентичного кода, почему то, то, что этим кодом является теперь XAML, принимают Ваше решение, несколько отличающееся?
ControlTemplate мог бы работать:
<ControlTemplate x:Key="ButtonControlTemplate1" TargetType="{x:Type Button}">
<StackPanel Height="Auto" Width="Auto">
<TextBlock Text="{TemplateBinding Content}" Foreground="Red"/>
<TextBlock Text="{TemplateBinding Tag}" Foreground="Red"/>
</StackPanel></ControlTemplate>
Я использовал TemplateBinding для получения двух изменяемых частей данных. Теперь, когда Вы создаете кнопку, применяете Шаблон и устанавливаете Привязку к Вашим элементам:
<Button x:Name="BuyButton"
Margin="0,0,1,1"
IsEnabled="{Binding CanBuy}"
Template="{DynamicResource ButtonControlTemplate1}"
Content="Button"
Tag="{Binding BuyPrice}"/>
Единственной вещью, отсутствующей, является DataContext: просто установите его в контейнере выше этих двух кнопок.
Я не попробовал его а именно, но кажется, что это должно работать. Я выбрал "Tag" выше, потому что мне был нужен второй элемент для Привязки. Я хотел бы видеть различные предложения об этом.
Вы, вероятно, также хотите повредить ForegroundColor = "Красный" материал типа в стиль.
Разделите его на пользовательский элемент управления. Принципы DRY и рефакторинг нужно рассматривать то же через примерно любую платформу.
Если Ваша цель состоит в том, чтобы только уменьшить повторение, можно устранить многое из него при помощи Стилей и установки общих приложенных свойств на родительском элементе:
<StackPanel>
<StackPanel.Resources>
<Style TargetType="{x:Type Button}">
<Setter Property="Margin" Value="0,0,1,1"/>
</Style>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Foreground" Value="Red"/>
<Setter Property="DataContext" Value="{Binding Product}"/>
</Style>
</StackPanel.Resources>
<Button x:Name="BuyButton" IsEnabled="{Binding CanBuy}">
<StackPanel>
<TextBlock Text="BUY"/>
<TextBlock Text="{Binding BuyPrice}"/>
</StackPanel>
</Button>
<Button x:Name="SellButton" IsEnabled="{Binding CanSell}">
<StackPanel>
<TextBlock Text="SELL"/>
<TextBlock Text="{Binding SellPrice}"/>
</StackPanel>
</Button>
</StackPanel>
Обратите внимание, что это заканчивает тем, что было большим количеством кода..., который является, почему "3 забастовки, затем осуществите рефакторинг", эмпирическое правило.