Wpf 通过画布内的触发器事件更改主窗体控件
我目前正在从事一个项目,该项目要求我使用画布围绕图片中的特定位置绘制矩形(以标记位置) 每个矩形(实际上是“矩形”,因为它也是我从Wpf 通过画布内的触发器事件更改主窗体控件,wpf,Wpf,我目前正在从事一个项目,该项目要求我使用画布围绕图片中的特定位置绘制矩形(以标记位置) 每个矩形(实际上是“矩形”,因为它也是我从网格类继承创建的自定义类,并且包含一个矩形对象)包含有关图片中标记位置的属性和数据。 我的主窗体包含控件,如文本框,下拉列表等 现在我要做的是,每次单击“矩形”对象时,主窗体控件都将填充对象数据。 我无法从canvas类访问这些控件 此代码位于Costum canvas类中,用于将对象添加到画布中: protected override void OnMouseLef
网格
类继承创建的自定义类,并且包含一个矩形对象)包含有关图片中标记位置的属性和数据。
我的主窗体包含控件,如文本框
,下拉列表
等
现在我要做的是,每次单击“矩形”对象时,主窗体控件都将填充对象数据。
我无法从canvas类访问这些控件
此代码位于Costum canvas类中,用于将对象添加到画布中:
protected override void OnMouseLeftButtonDown( MouseButtonEventArgs e)
{
if(e.ClickCount==2)
{
testTi = new TiTest();
base.OnMouseLeftButtonDown(e);
startPoint = e.GetPosition(this);
testTi.MouseLeftButtonDown += testTi_MouseLeftButtonDown;
Canvas.SetLeft(testTi, e.GetPosition(this).X);
Canvas.SetTop(testTi, e.GetPosition(this).X);
this.Children.Add(testTi);
}
}
通过点击画布中的一个物体,我想要得到信息。
现在,我只想确保通过一个简单的messagebox获得正确的对象
void testTi_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
MessageBox.Show(sender.GetType().ToString());
}
这是我的服装“长方形”课
有没有办法从costure canvas类或costure rectangle类访问主窗体控件
提前感谢您可以将主窗口绑定到保存矩形属性的单音视图模型 视图模型
public class MainWindowViewModel : INotifyPropertyChanged
{
#region Singletone
private static MainWindowViewModel _instance;
private MainWindowViewModel()
{
}
public static MainWindowViewModel Instance
{
get
{
if (_instance == null)
_instance = new MainWindowViewModel();
return _instance;
}
}
#endregion
#region Properties
private string _someInfo;
public string SomeInfo
{
get
{
return _someInfo;
}
set
{
if (_someInfo != value)
{
_someInfo = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("SomeInfo"));
}
}
}
#endregion
#region INotifyPropertyChanged Members
public event PropertyChangedEventHandler PropertyChanged;
#endregion
}
在主窗口中使用xaml
<TextBox Text="{Binding SomeInfo}"/>
最后,从处理矩形的单击事件(testTi\u MouseLeftButtonDown
)的位置,访问MainWindowViewModel
实例并相应地设置其属性
MainWindowViewModel.Instance.SomeInfo = myRectangle.SomeInfo;
这将触发PropertyChanged
事件,该事件将更新主窗口上的控件
如果您不熟悉MVVM(Model,View.View Model)模式,您可以阅读它
希望这有帮助侧注-为什么要通过继承
网格
类而不是类或类本身来创建自定义矩形?您好,因为我需要一种方法将文本标签添加到标记对象。无法将标签添加到矩形,所以我使用了网格,以便可以将子项(标签和矩形)添加到该网格中矩形大小实际上就是网格大小。你能发布一些代码吗?非常感谢你的快速响应!
this.DataContext = MainWindowViewModel.Instance;
MainWindowViewModel.Instance.SomeInfo = myRectangle.SomeInfo;