childWindow控件作为自定义控件
本文关键字:自定义控件 控件 childWindow | 更新日期: 2023-09-27 18:21:54
我知道silverlight已经有了一个子窗口控件,但我想使用我自己库中的这个子窗口控件。
特别是,我希望代码看起来像这样:XAML:
<mycontrols:myChildWindow x:Class="SilverlightClassLibrary1.ChildWindow1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mycontrols="clr-namespace:mynamespace;assembly=myassembley"
Width="400" Height="300"
Title="ChildWindow1">
<Grid x:Name="LayoutRoot" Margin="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Button x:Name="CancelButton" Content="Cancel" Click="CancelButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,0,0" Grid.Row="1" />
<Button x:Name="OKButton" Content="OK" Click="OKButton_Click" Width="75" Height="23" HorizontalAlignment="Right" Margin="0,12,79,0" Grid.Row="1" />
</Grid>
我的项目会引用myassembly.dll,其中会有mynamespace。mynamespace中会有类myChildWindow。此类可以从System.windows.control.childwindow继承(可能)。
我知道这是一种奇怪的实现方式。但我需要这样。请告诉我如何实现myChildWindow类?
如果问题不清楚,请进一步提问。我可以对问题进行编辑。
您需要两样东西。
1.创建从ChildWindow派生的类
namespace mynamespace
{
public class myChildWindow : ChildWindow
{
public myChildWindow():base()
{
//Add custom constructor code
}
}
}
2.在XAML更改中
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
至
xmlns="http://schemas.microsoft.com/client/2007"
查看XAML主体的示例:
<mycontrols:myChildWindow x:Class="Project.Views.EditReport"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mycontrols="clr-namespace:mynamespace;assembly=myassembley"
Width="400"
Title="Edit Report"></CWindow>
在我看来,你似乎已经回答了自己的问题。如上所述,您可以从ChildWindow继承。但是,在那之后,您需要做的是在Silverlight项目中包含对包含此类的程序集的引用。完成此操作后,程序集将被添加到AppManifest,DLL将包含在Xap包中,并且您将能够像已经完成的那样在Xaml中引用它。
上面的命名空间是错误的想法。应该是:
namespace mynamespace
{
public class myChildWindow : ChildWindow
{
public myChildWindow():base()
{
//Add custom constructor code
}
}
}
它应该编译到名为"myassembley"的程序集中。但是,如果您正在引用另一个程序集,则不能在Xaml中使用x:Class。