2

如果插入片段propdp,它不會在DepencendyProperty.Register方法的第一個參數使用nameof運營商的屬性名稱和它創造這樣的事情:爲什麼「propdp」代碼片段不使用nameof運算符作爲註冊屬性的名稱?

public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register("Text", typeof(string), typeof(MyContentControl), new PropertyMetadata("")); 

和obviusly可以更好,如果你在下面的例子中使用操作nameof,如:

public string Text 
    { 
     get { return (string)GetValue(TextProperty); } 
     set { SetValue(TextProperty, value); } 
    } 

    // Using a DependencyProperty as the backing store for Text. This enables animation, styling, binding, etc... 
    public static readonly DependencyProperty TextProperty = 
     DependencyProperty.Register(nameof(Text), typeof(string), typeof(MyContentControl), new PropertyMetadata("")); 
+0

'nameof'是相對較新的,我不確定片段能夠確定您的項目正在編譯的C#版本。如果您正在處理舊的和新的c#項目,並且片段無法確定正在使用哪個版本的c#,那麼這可能是原因。保持片段支持遺留下來,所以無論如何它都能正常工作,而不是被「破壞」(對於較老的項目)。 – Kritner

+0

或者它可能剛剛被忽略 – Kritner

+0

或者使用nameof創建一個新的代碼片段,例如在您使用C#6的情況下使用「npropdp」。 – joseangelmt

回答

4

您可以修改代碼片段之後的下一個步驟:

  • 找到代碼段的文件。選擇菜單選項工具/代碼片段管理器...。代碼片段管理器對話框將顯示。
  • 語言,請選擇CSharp
  • 打開NetFX30並選擇定義依賴項屬性。您將在位置中看到文件的路徑。應該在C:\ Program Files文件(x86)的\微軟的Visual Studio 14.0 \ VC#\片段\ 1033 \ NetFX30

打開文件,並從

public static readonly DependencyProperty $property$Property = 
DependencyProperty.Register("$property$", typeof($type$), typeof($ownerclass$), new PropertyMetadata($defaultvalue$)); 
改變宏定義

public static readonly DependencyProperty $property$Property = 
DependencyProperty.Register(nameof($property$) , typeof($type$), typeof($ownerclass$), new PropertyMetadata($defaultvalue$)); 

並保存(請記住以管理員身份打開文本編輯器)。

重新啓動Visual Studio。

相關問題