[英]WPF User Control design time accessing internal user control
我有一個用戶控件A,其中包含另一個用戶控件B。
用戶控件A具有依賴項屬性DeviceColour
。 這確定內部用戶控件B的顏色。
此Dependency屬性的注冊如下:
public static readonly DependencyProperty DeviceColourProperty = DependencyProperty.Register("DeviceColour",
typeof(vhBase.DeviceColours),typeof(ucBaseDevice),new FrameworkPropertyMetadata(vhBase.DeviceColours.Gray,
FrameworkPropertyMetadataOptions.AffectsRender,new PropertyChangedCallback(DeviceColourProperty_PropertyChanged)));
public vhBase.DeviceColours DeviceColour
{
get { return (vhBase.DeviceColours)GetValue(DeviceColourProperty); }
set { SetValue(DeviceColourProperty, value); }
}
private static void DeviceColourProperty_PropertyChanged(DependencyObject obj, DependencyPropertyChangedEventArgs e)
{
ucBaseDevice device = (ucBaseDevice)obj;
device.VisualDevice.DeviceColour = (vhBase.DeviceColours)e.NewValue;
}
在上述屬性更改事件中, VisualDevice
是指向內部用戶控件B的屬性,如下所示:
public override vhBase VisualDevice
{
get { return vhMain; }
}
vhMain
是用戶控件B,我可以在XAML設計器中看到它並對其進行操作。
我在設計時遇到的問題是VisualDevice
似乎正在返回NULL,即vhMain
,用戶控件為null,因此“對象引用未設置為實例....”。
這在運行時有效,但我需要它在設計時也有效。
正如您可能已經意識到的那樣,我對DP以及WPF總體上並不了解太多,而且我發現自己正在轉圈。
誰能幫忙嗎?
謝謝
我已經做了一個簡單的示例,說明了如何將孩子的財產綁定到父母的財產。 我以Color屬性為例,但是對於每種屬性類型都是相同的。
有兩個用戶控件:帶DP'Colour'的ControlB
和帶DP DeviceColour
ControlA
。 ControlB
只是將其背景繪制為指定的顏色:
<UserControl x:Class="WpfApplication1.ControlB" <!--skipped--> Name="controlB">
<Grid>
<Grid.Background>
<SolidColorBrush Color="{Binding ElementName=controlB, Path=Colour}" />
</Grid.Background>
</Grid>
</UserControl>
以及如何在ControlA中從XAML綁定該屬性:
<UserControl x:Class="WpfApplication1.ControlA" <!--skipped--> Name="controlA">
<Grid>
<my:ControlB Colour="{Binding ElementName=controlA, Path=DeviceColour}" />
</Grid>
</UserControl>
還有如何使用ControlA:
<Window x:Class="WpfApplication1.MainWindow" <!--skipped-->>
<Grid>
<my:ControlA DeviceColour="Green" />
</Grid>
</Window>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.