每次我们在 setter 中调用PropertyChanged时,MVVM Light中都没有简写形式,类似于flex [Bindable]:

[PropertyChanged]
public bool IsEditable { .... }

为什么我们每次都要编写PropertyChanged(“IsEditable”),它容易出错,因此可以在默认位置编写它。

最佳答案

如果不重写IL插入PropertyChanged调用,则无法完成此操作。 (或者使用非常慢的代理,并在运行时构建继承的类型)

您正在寻找PostSharp

您还可以创建引发事件的代码段:

<?xml version="1.0" encoding="utf-8" ?>
<CodeSnippets  xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
    <CodeSnippet Format="1.0.0">
        <Header>
            <Title>Property With Change Event</Title>
            <Shortcut>propc</Shortcut>
            <Description>Code snippet for property that calls OnPropertyChanged and XML description</Description>
            <Author>SLaks</Author>
            <SnippetTypes>
                <SnippetType>Expansion</SnippetType>
            </SnippetTypes>
        </Header>
        <Snippet>
            <Declarations>
                <Literal>
                    <ID>type</ID>
                    <ToolTip>Property type</ToolTip>
                    <Default>string</Default>
                </Literal>
                <Literal>
                    <ID>property</ID>
                    <ToolTip>Property name</ToolTip>
                    <Default>MyProperty</Default>
                </Literal>
                <Literal>
                    <ID>field</ID>
                    <ToolTip>Backing field name</ToolTip>
                    <Default>myProperty</Default>
                </Literal>
                <Literal>
                    <ID>desc</ID>
                    <ToolTip>The description of this property</ToolTip>
                    <Default>...</Default>
                </Literal>
            </Declarations>
            <Code Language="csharp"><![CDATA[$type$ $field$;
            ///<summary>Gets or sets $desc$.</summary>
            public $type$ $property$ {
                get { return $field$; }
                set { $field$ = value; OnPropertyChanged("$property$"); }
            }
            $end$]]></Code>
        </Snippet>
    </CodeSnippet>
</CodeSnippets>

关于.net - 为什么在MVVM Light中没有PropertyChanged的简写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4558341/

10-12 04:51