将一个对象从主窗口传递给一个CustomClass
本文关键字:CustomClass 一个 一个对象 窗口 | 更新日期: 2023-09-27 17:52:38
如何将对象从MainWindow.xaml.cs
传递到MyClass.cs
?
- MainWindow.xaml
MainWindow.xaml.cs
- MyClass.cs
- Building.cs
MainWindow.xaml.cs:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var b = new Building();
b.Name = "My Building";
}
}
XAML:
<Window x:Class="CustomClasses.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:customclasses="clr-namespace:CustomClasses"
Title="MainWindow" Height="350" Width="525">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="150"></RowDefinition>
</Grid.RowDefinitions>
<customclasses:MyClass x:Name="myClass">
</customclasses:MyClass>
<StackPanel Grid.Row="1">
</StackPanel>
</Grid>
</Window>
如果你只对一个对象感兴趣,你可以在MyClass中声明Dependency Property
,并可以通过XAML绑定。
public class MyClass : Border
{
public Building MyBuilding
{
get { return (Building)GetValue(MyBuildingProperty); }
set { SetValue(MyBuildingProperty, value); }
}
public static readonly DependencyProperty MyBuildingProperty =
DependencyProperty.Register("MyBuilding", typeof(Building),
typeof(MyClass));
}
和在MainWindow
中,你必须声明Building类型的属性:
public Building MyBuilding { get; set;}
public MainWindow()
{
InitializeComponent();
DataContext = this;
MyBuilding = new Building();
b.Name = "My Building";
}
如果MyBuilding
可以在应用程序执行时更改,请确保在MainWindow类上实现INotifyPropertyChanged
,并且每当MyBuilding设置时都会引发属性更改事件。
XAML
<customclasses:MyClass x:Name="myClass" MyBuilding="{Binding MyBuilding}"/>
您可以在后面的代码中指定MyClass
的属性:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var b = new Building();
b.Name = "My Building";
myClass.MyBuilding = b;
}
}
class MyClass
{
public Building MyBuilding {get; set;}
}