Я думаю, вам нужно переосмыслить свой подход здесь.
Сначала есть некоторые неизвестные вещи.
Единственное, что я предполагаю, это то, что ваш isPicked
логический объект является свойством.
То, как я бы поступил, использует ValueConverter
Итак, прежде всего в DataContext
вашей точки зрения, у меня будет свойство IsPicked
:
private bool isPicked;
public bool IsPicked
{
get { return isPicked; }
set { isPicked = value; OnPropertyChanged(); }
}
Тогда я бы создал новый файл .cs для конвертера:
class BoolToColor : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return (bool)value ? "#3EF79B" : "#FFFFFF";
/*Same as:
if((bool)value)
{
return "#3EF79B";
}
else
{
return "#FFFFFF";
}*/
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
затем, наконец, установите все это в представлении (в этом случае я использовал Window
):
<Window.Resources>
<local:BoolToColor x:Key="BoolToColor" />
</Window.Resources>
<Grid>
<Button Width="50" Height="50" Click="Button_Click" />
<Grid Width="20" Height="20" HorizontalAlignment="Right" Margin="0,0,14,0">
<Line x:Name="line1" X1="0" Y1="0" X2="20" Y2="20" Stroke="{Binding IsPicked, Converter={StaticResource BoolToColor}}" StrokeThickness="1"/>
<Line x:Name="line2" X1="0" Y1="20" X2="20" Y2="0" Stroke="{Binding IsPicked, Converter={StaticResource BoolToColor}}" StrokeThickness="1"/>
</Grid>
</Grid>
Но подождать, есть кнопка? Да, я добавил кнопку, чтобы проверить изменение цвета.
Вот код для Button_Click
:
private void Button_Click(object sender, RoutedEventArgs e)
{
IsPicked = !IsPicked;
}
Наконец, я надеюсь, вы поймете, что вместо кнопки вы можете изменить значение свойства IsPicked
, чтобы установить цвет. Я надеюсь, что это поможет вам продолжить ваш проект :)