【发布时间】:2019-10-06 10:56:33
【问题描述】:
我想改变 line1 和 line2 的颜色,如下所示。 如何在 C# 代码中绑定变量? 有没有很好的办法解决下面的代码?
- xaml 代码
<ControlTemplate TargetType="ToggleButton">
<Grid>
<Grid Width="6" Height="6" HorizontalAlignment="Right" Margin="0,0,14,0">
<Line x:Name="line1" X1="0" Y1="0" X2="6" Y2="6" Stroke="#BDC4CF" StrokeThickness="1"/>
<Line x:Name="line2" X1="0" Y1="6" X2="6" Y2="0" Stroke="#BDC4CF" StrokeThickness="1"/>
</Grid>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="line1" Property="Stroke" Value="{binding linecolor}"/>
<Setter TargetName="line2" Property="Stroke" Value="{binding linecolor}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
- c#代码
public bool IsChecked
{
get { return (bool)GetValue(IsCheckedProperty); }
set
{
SetValue(IsCheckedProperty, value);
ToggleBtn.IsChecked = value;
if(isPicked == true)
{
linecolor = (Brush)(new BrushConverter().ConvertFrom("#3EF79B"));
}
else
{
linecolor = (Brush)(new BrushConverter().ConvertFrom("#FFFFFF"));
}
}
}
【问题讨论】:
-
你看过
Converters了吗? IValueConverter usage -
我不需要复选框。我只想将颜色绑定到一个变量。
-
你可以把你的价值变成一种颜色。 Here is a color example.
-
您能否详细说明以下内容:
IsCheckedProperty、isPicked、linecolor? -
我已经给你留下了我将如何处理你的问题的答案。它解决了您的问题还是您的问题还有其他问题?请让我们知道,以便我们可以回答这个问题:)