在ResourceDictionary中的Setter属性值属性中获取精确值

时间:2017-04-03 10:51:58

标签: c# wpf xaml resourcedictionary

我有以下资源ResourceDictionary xml文件,我正在尝试在代码隐藏中获取Property="Data" setter值

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:local="clr-namespace:SampleProject.Layout">

    <!-- User -->
    <Style x:Key="Process" TargetType="Path">        
        <Setter Property="Data" Value="M24.5,0 L25.5,0 C39,0 z"/>
    </Style>

</ResourceDictionary>

为此我尝试了以下内容

var myStyle = (Style)FindResource("User");

这是获得所有的设置者,我可以像这样得到特定的设定者

    var myStyle = (Style)FindResource("Process");

    foreach (var item in myStyle.Setters)
    {
        Setter val2 = (Setter)item;

        if (val2.Property.ToString() == "Data")
        {
          string value =  val2.Value.ToString();
        }
    }

一旦我调试了这个,我可以看到,虽然它的实际值M24.5,0 L25.5,0 C39,0 z在从代码后面的代码中得到这个值后变成M24.5,0L25.5,0C39,0z。 在0之后删除空格,

如何在不重新格式化xaml文件的实际值的情况下获取精确值?

1 个答案:

答案 0 :(得分:0)

  

如何在不重新格式化xaml文件的实际值的情况下获取精确值?

我不知道为什么你真的需要空间或原始的string,但我可以告诉你,在XAML处理器解析了XAML之后,没有确切的string值。

它将根据您在XAML标记中定义的Geometry创建一个string对象,之后不再检索string

获取原始string的唯一方法是查看未编译的源文件。