Добавлять в метку контент вместо перезаписи WPF C# - PullRequest
0 голосов
/ 12 февраля 2020

Я сделал небольшую программу WPF. Но это мой первый и я нарисовал бланк. Я выяснил, как привязывать данные и добавлять содержимое из флажков на ярлык.

Моя проблема в том, что когда я нажимаю ex «Маленький кофе», а затем нажимаю «с сахаром», я хочу добавить его в строка вместо того, чтобы писать поверх того, что было просто там. Я думаю, что мне нужно использовать приложение. Но это мое первое, и я понятия не имею, как записать это в коде. Спасибо.

XAML

<RadioButton Content="Small" HorizontalAlignment="center" VerticalAlignment="Top" Margin="300,55,0,0" Click="SmlClicked"></RadioButton>
<RadioButton Content="Medium" HorizontalAlignment="center" VerticalAlignment="Top" Margin="450,55,0,0" Click="MdClicked"></RadioButton>

<CheckBox Name="SugarCheck" Content="Sugar" HorizontalAlignment="center" VerticalAlignment="Center" Margin="250,0,0,0" Checked="SugarChecked"></CheckBox>
<CheckBox Name="CreamCheck" Content="Cream" HorizontalAlignment="center" VerticalAlignment="Center" Margin="500,0,0,0" Checked="CreamChecked"></CheckBox>

<Label Name="order" Content="Your Coffee" HorizontalAlignment="center" VerticalAlignment="Center" Margin="170,145,0,0"></Label>

C#

private void SugarChecked(object sender, RoutedEventArgs e)
{
    order.Text+= "with sugar";
}

private void CreamChecked(object sender, RoutedEventArgs e)
{
    order.Content = "with cream";
}

private void SmlClicked(object sender, RoutedEventArgs e)
{
    order.Content = "Small";
}

private void MdClicked(object sender, RoutedEventArgs e)
{
    order.Content = "Medium";
}

private void LrgClicked(object sender, RoutedEventArgs e)
{
    order.Content = "Large";
}

1 Ответ

1 голос
/ 12 февраля 2020

Вы должны просто использовать оператор + = следующим образом:

private void SugarChecked(object sender, RoutedEventArgs e)
{
    order.Content += "with sugar";
}
private void CreamChecked(object sender, RoutedEventArgs e)
{
    order.Content += "with cream";
}

private void SmlClicked(object sender, RoutedEventArgs e)
{
    order.Content += "Small";
}

private void MdClicked(object sender, RoutedEventArgs e)
{
    order.Content += "Medium";
}

private void LrgClicked(object sender, RoutedEventArgs e)
{
    order.Content += "Large";
}

Хотя формат вашей строки будет ужасным ...

Лучше всего использовать этот случай, чтобы узнайте о конвертерах, получите класс Coffee, который меняется в зависимости от того, что вы делаете с помощью кнопок, и привяжите его к своей этикетке с помощью пользовательского конвертера:)

Проверьте эту ссылку, чтобы узнать о пользовательских конвертерах: https://www.wpf-tutorial.com/data-binding/value-conversion-with-ivalueconverter/

...