当比例值改变时调用事件

时间:2017-12-13 02:52:32

标签: c# events delegates

我在UI页面上工作以表示比例的重量值。
c#代码不断从实际设备中读取比例值
我必须在UI(wpf)屏幕上显示价值。

当缩放值改变UI屏幕(scaleShow.xaml.cs)时需要知道 比例值已经改变。

所以我正在考虑使用该事件让scaleShow.xaml.cs页面知道。
但不确定如何实施它

from collections import defaultdict
cnt = defaultdict(int) # create a default dict where the default value is
                       # the result of calling int
for key in arr:
  cnt[key] += 1 # if key is not in cnt, it will put in the default

# cnt_list = list(cnt.items())

我尝试在MainWindow.cs中创建事件但不确定如何使用它(如果它的按钮点击它有点明显可用)

MainWindow.xaml.cs
    this.Dispatcher.BeginInvoke(new Action(delegate()
    {
        this.ctTbWeight.Text = this.curWeight + " kg";
        //when this.curWeight value changed I want to the scale.xaml.cs page notice it 
    }




scale.xaml.cs
     public scale(EventHandler handler, ILog logger, ObservableDictionary<string, LanguageChangedImpl> language, Stopwatch elapse)
            {
                InitializeComponent();


                this.Loaded += new RoutedEventHandler(_PageLoaded);

                this.tel = new Telegram();
                this.tel.Name = this.GetType().Name;
                this.pagingMachine = handler;
                this.def = new Defines();
                this.log = logger;
                this.lang = language;
                this.elapseTime = elapse;
            }

请给我一些方向让比例页面注意到比例值已经改变。如果您需要更多信息,请告诉我。

2 个答案:

答案 0 :(得分:0)

您可以在显示控件上使用Dependency属性和Binding,而不是使用事件。 在后面的代码中,创建一个依赖属性:

reject_if block

注意:我假设价值是双倍的 - 如果你的是另外的话就改变它。 在UI的xaml文件中,只需将相应的属性绑定到ScaleValue

即可
public static readonly DependencyProperty ScaleValueProperty = DependencyProperty.Register("ScaleValue", typeof(double), typeof(MainWindow), new PropertyMetadata(default(double)));

public double ScaleValue { get { return (double) GetValue(ScaleValueProperty); } set { SetValue(ScaleValueProperty, value); } }

正常的依赖项属性通知事件应该在ScaleValue更改时处理UI的更新

答案 1 :(得分:0)

使用事件处理程序:

公共事件EventHandler myEvent;

public MainWindow()
{
 InitializeComponent();
 myEvent = OnMyEvent;
}

private void OnMyEvent(object sender, EventArgs e)
{
 //do UI updates
}

现在在您检查比例值的循环中,通过调用

来触发事件
myEvent?.Invoke(this,null)