如何从帮助程序类

时间:2015-09-14 21:43:48

标签: c# wpf data-binding

我确定这是一个非常基本的问题,但我甚至不知道谷歌的技术术语/行话并自学成才。

我创建了一个实现INotifyPropertyChanged的简单模型。

public class PushNotes : INotifyPropertyChanged
{

    public string CompletePushNotes { get; set; }

}

在cs中绑定:

        evt_pushNotes = new PushNotes()
        {
            CompletePushNotes = "HelloThere"
        };

        this.DataContext = evt_pushNotes;

       //snip later in code

      Helpers.UpdateCompletePushNotes();

在XAML中:

<xctk:RichTextBox x:Name="PushEmail" Text="{Binding Path=CompletePushNotes, Mode=OneWay}" ScrollViewer.VerticalScrollBarVisibility="Auto" Margin="40,398,40,40">
        <xctk:RichTextBox.TextFormatter>
            <xctk:PlainTextFormatter />
        </xctk:RichTextBox.TextFormatter>
    </xctk:RichTextBox>

助手:

internal static class Helpers
{
   internal static void UpdateCompletePushNotes()
   {
         //duhhhh what do I do now??
       //If I create a new PushNotes it will be a different instantiation....???
   }
}

现在这一切都很好但是我在helper类中有一个方法需要更改CompletePushNotes。

我再次知道这是一个简单/新手的问题,但我不知道自己需要学习什么。

所以我将PushNotes类设为静态或单例。是否有一些全球约束&#34;树&#34;我可以走路找到附加到UI元素的实例化和绑定的PushNotes类?

不寻找分发只是需要知道我在寻找什么。

TIA

1 个答案:

答案 0 :(得分:4)

您的PushNotes类未实现INotifyPropertyChanged接口。实现后,您需要修改CompletePushNotes属性以获得支持字段,并且在属性的setter中,您可以引发PropertyChanged事件以通知UI源属性更新。

public class PushNotes : INotifyPropertyChanged
{
    string completePushNotes;
    public string CompletePushNotes
    {
        get
        {
            return completePushNotes;
        }

        set
        {
            completePushNotes = value;
            OnPropertyChanged();
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}

使PushNotes类静态不会对您有所帮助。你似乎有一个PushNotes实例(evt_pushNotes)的变量,所以只需:

evt_pushNotes.CompletePushNotes = something;

如果你有一个帮助类做某事,请调用helper类中的方法并返回值,或者将PushNotes实例作为参数传递给helper类。

internal static class Helpers
{
   internal static void UpdateCompletePushNotes(PushNotes pushNotes)
   {
       pushNotes.CompletePushNotes = something;
   }
}