我有没有办法知道" Run"的字体大小?是有价值的还是有价值的?下面的代码可以解释我的目的:
Run run = new Run();// here run.Fontsize is default maybe 12
run.FontSize = 12;// now it is assiged to 12
tbk.Inlines.Add(run);
tbk是在xaml中定义的TextBlock,其fontsize设置为36.如果Run的fontizes是一个defualt值,它总是使用与TextBlock相同的fontsize。
顺便说一下,我必须在一个函数中找到它,对象'运行'是一个参数,我在函数之外没有任何关于它的知识。答案 0 :(得分:1)
localValue2 = DependencyProperty.UnsetValue
object o1 = new Run("Test") { FontSize = 12 };
var r1 = o1 as TextElement;
if (r1 != null)
{
// 12.0
var localValue1 = r1.ReadLocalValue(TextElement.FontSizeProperty);
// 12.0
var getValue1 = r1.GetValue(TextElement.FontSizeProperty);
}
object o2 = new Run("Test");
var r2 = o2 as TextElement;
if (r2 != null)
{
// UnsetValue
var localValue2 = r2.ReadLocalValue(TextElement.FontSizeProperty);
// 12.0
var getValue2 = r2.GetValue(TextElement.FontSizeProperty);
}
但是,当TextElement
是树的一部分时,它可能会从其父级继承非默认值。然后仍然没有本地值,但它也不是默认值。
object o3 = new Run("Test");
var textParent = new TextBlock(o3 as Run) { FontSize = 13 };
var r3 = o3 as TextElement;
if (r3 != null)
{
// UnsetValue
var localValue3 = r3.ReadLocalValue(TextElement.FontSizeProperty);
// 13.0
var getValue3 = r3.GetValue(TextElement.FontSizeProperty);
}
如果您想知道默认值,请将var runElementFontsizeDefault = TextElement.FontSizeProperty.GetMetadata(r1).DefaultValue;
与Run r1
一起使用。
开放辩论:父元素可能具有不同的默认值,因此如果未设置本地值且默认值不同于当前值,您仍然不知道父值是默认值还是已修改(除非你检查)。