我创建了一个自定义控件,该控件在其自己的 XAML 表中进行样式设置和配置。此控件中的数据绑定使用特定对象(CProject 类)。
澄清一下,该控件是一个项目框架,具有设置控件和一个画布,该画布将成为每个/任何项目的工作区。
项目控件 (IPProjectPanel) 继承了“Frame”,并将“设置”堆栈面板添加到其子列表中,该列表又包含用于设置的控件。
然而,CProject 类是纯功能部分,没有任何 UI 交互或处理。因此,我需要将 CProject 的一个实例“插入”到每个可以激活的独特项目中。因此,我想将 CProject 的特定实例设置为 tabpanel 中每个 IPProjectPanel 实例的数据上下文。我想通过代码设置数据上下文,或者通过 XAML 中的设置数据上下文创建它,并在初始化后检索它。
不过,问题是我也无法弄清楚。
这是 XAML 中 IPProjectPanel 样式的片段,它使用在 XAML 中设置数据上下文的方法:
<Style TargetType="{x:Type ip:IPProjectGrid}">
<Setter Property="OverridesDefaultStyle"
Value="True" />
<Setter Property="SnapsToDevicePixels"
Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ip:IPProjectGrid}">
<Grid Background="White"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Margin="0">
<!---->
<Grid.DataContext>
<ipp:CProject></ipp:CProject>
</Grid.DataContext>
<StackPanel x:Name="PART_settingsPanel"
HorizontalAlignment="Right"
VerticalAlignment="Stretch"
MinWidth="300" Background="Gray">
<GroupBox Header="Project settings">
<StackPanel>
....
</style>
在这里,它被设置为 Grid 的上下文,但我想将它作为实际类(IPProjectPanel)的上下文。
因此,IPProjectPanel 实例是由代码创建的(现在..),我需要检索 CProject 实例(或设置一个)以便我可以使用它。
我想保持 C#/WPF 做事的方式,因为这个应用程序也在训练 WPF 和 C# 概念等。所以“最好的 C#-WPF”方法是非常受欢迎的,但无论哪种方式都是一种解决方案!
感谢您的时间。