项目-WPF,C#,IDE-Visual Studio。我想在我的 PlotView 上进行绑定值跟踪。我的代码XAML:
<Border CornerRadius="6" BorderBrush="Gray" BorderThickness="4" Grid.Column="0" Grid.ColumnSpan="2">
<oxy:PlotView Background="White" Model="{Binding GraphicModel.Model}" >
</oxy:PlotView>
</Border>
<TextBlock Text="{Binding CurrentTrackerValue}" Grid.Column="0" Grid.Row="1"/>
我知道,什么PlotView.Model都有事件 TrackerChange 。如何使用此事件? P.S .:我使用模式MVVM,所以我想使用命令代替事件。谢谢!
答案 0 :(得分:1)
如果我正确理解您的要求,则希望在每次更新跟踪器时都更新一个TextBlock。我相信您在TrackerChanged事件上正步入正轨。您可以在要创建PlotModel实例的ViewModel中执行以下操作,该实例将绑定到OxyPlot Graph
PlotModelName.TrackerChanged += (sender, eventArgs)=>
{
CurrentTrackerValue = eventArgs.HitResult != null ? eventArgs.HitResult.Text : CurrentTrackerValue;
NotifyPropertyChanged(nameof(CurrentTrackerValue));
};
CurrentTrackerValue定义为
public string CurrentTrackerValue { get; set; }
这将确保每次通过TrackerChangedEvent更改跟踪器时,都会更新CurrentTrackerValue属性
答案 1 :(得分:1)
伙计们,它的工作原理非常感谢:)
.NET 4.7.2
INotifyPropertyChanged
和public string CurrentTrackerValueX { get; set; } public string CurrentTrackerValueY { get; set; }
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }
pm.TrackerChanged += (sender, eventArgs) => { string CurrentTrackerValue = ""; CurrentTrackerValue = eventArgs.HitResult != null ? eventArgs.HitResult.Text : CurrentTrackerValue; if (!String.IsNullOrEmpty(CurrentTrackerValue)) { var x = Regex.Matches(CurrentTrackerValue, "([0-9]*,[0-9]*)"); CurrentTrackerValueX = x[0].Value; CurrentTrackerValueY = x[1].Value; OnPropertyChanged(nameof(CurrentTrackerValueX)); OnPropertyChanged(nameof(CurrentTrackerValueY)); } };
If loop
是必需的,因为在离开Tracker后文本框中的值为空,他仍然希望为文本框提供null。
已完成并使用此类型的字符串:)
editcurrentLineSeries[i].TrackerFormatString = "{0}\n{1}: {2:0.00}\n{3}: {4:0.00}";