gpt4 book ai didi

c# - 如何在 C# 中的 FontWeights 之间使用等于运算符?

转载 作者:行者123 更新时间:2023-11-30 17:03:49 24 4
gpt4 key购买 nike

我必须在我的 CustomControl 中创建一个 FontWeight 属性,但它在控制 FontWeights 时出错。我该如何解决?

属性(property)登记:

public static readonly DependencyProperty FontWeightProperty =
DependencyProperty.Register(
"FontWeight",
typeof(int),
typeof(WatermarkTextBox),
new PropertyMetadata(0));

Property(我们可以改变这个属性,这是我的业余工作):

    private int _watermarkFontWeight = 0;

public int WatermarkFontWeight
{
get
{
if (watermarkPassTextBox.FontWeight == FontWeights.Normal)
{
_watermarkFontWeight = 0;
}
else if (watermarkPassTextBox.FontWeight == FontWeights.SemiBold)
{
_watermarkFontWeight = 1;
}
else if (watermarkPassTextBox.FontWeight == FontWeights.Bold)
{
_watermarkFontWeight = 2;
}
else if (watermarkPassTextBox.FontWeight == FontWeights.ExtraBold)
{
_watermarkFontWeight = 3;
}
return _watermarkFontWeight;
}
set
{
if (value == 0)
{
SetProperty<int>(ref _watermarkFontWeight, value, "FontWeight");
watermarkPassTextBox.FontWeight = FontWeights.Normal;
}
else if (value == 1)
{
SetProperty<int>(ref _watermarkFontWeight, value, "FontWeight");
watermarkPassTextBox.FontWeight = FontWeights.SemiBold;
}
else if (value == 2)
{
SetProperty<int>(ref _watermarkFontWeight, value, "FontWeight");
watermarkPassTextBox.FontWeight = FontWeights.Bold;
}
else if (value == 3)
{
SetProperty<int>(ref _watermarkFontWeight, value, "FontWeight");
watermarkPassTextBox.FontWeight = FontWeights.ExtraBold;
}
}
}

错误:

Operator '==' cannot be applied to operands of type 'Windows.UI.Text.FontWeight' and 'Windows.UI.Text.FontWeight'

谢谢。

最佳答案

documentation page 中我可以看出(这令人惊讶地缺乏信息和/或我无法找到详细的 decoumentation),FontWeight 是一个 struct 值类型,== 定义一个运算符,这样你就不能直接比较它们。

但是,我认为您可以比较它们的底层包装 Weight 值:

if (watermarkPassTextBox.FontWeight.Weight == FontWeights.Normal.Weight)

编辑:我不确定他们的 Equals 实现是否有效(同样,可爱的文档),但您可以创建一个扩展方法来为您提供一些看起来不错的语法:

public static bool Equals(this FontWeight weight1, FontWeight weight2)
{
return weight1.Weight == weight2.Weight;
}

这导致使用:

if (watermarkPassTextBox.FontWeight.Equals(FontWeights.Normal))
_watermarkFontWeight = 0;
else if (watermarkPassTextBox.FontWeight.Equals(FontWeights.SemiBold))
_watermarkFontWeight = 1;
else if (watermarkPassTextBox.FontWeight.Equals(FontWeights.Bold))
_watermarkFontWeight = 2;
else if (watermarkPassTextBox.FontWeight.Equals(FontWeights.ExtraBold))
_watermarkFontWeight = 3;
else
return _watermarkFontWeight;

关于c# - 如何在 C# 中的 FontWeights 之间使用等于运算符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18188053/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com