我有自定义控件名为Frame(公共类Frame:ContentControl,IDisposable)。构造函数中的框架定义DefaultStyleKey = typeof(Frame);和Frame模板在Generic.xaml资源中。现在在其他一些项目中我使用Silverlight.Controls中的框架,如果我设置我的主页面,根元素就是这样的框架
<ShellFrame:Frame x:Class="Modules.Adresar.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:s="clr-namespace:Modules.Adresar.ViewModel"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:ShellFrame="clr-namespace:Silverlight.Controls;assembly=Silverlight.Controls" mc:Ignorable="d"
DataContext="{Binding Source={StaticResource VMLocator}, Converter={StaticResource VMIndexerConverter}, ConverterParameter=AdresarVM}"
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type=s:AdresarViewModel}" x:Name="MainFrame">
<Grid x:Name="LayoutMain">
</Grid>
我无法编辑框架模板。混合显示已禁用的编辑模板菜单项。但是如果我将框架放在普通用户控件的布局根网格中,那么一切都很好......就像这样
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:ShellFrame="clr-namespace:Silverlight.Controls;assembly=Silverlight.Controls"
mc:Ignorable="d"
x:Class="Adresar.Test"
d:DesignWidth="640" d:DesignHeight="480">
<Grid x:Name="LayoutRoot">
<ShellFrame:Frame Content="Frame" HorizontalAlignment="Left" Margin="72,136,0,0" VerticalAlignment="Top"/>
</Grid>
enybody知道为什么会这样吗?谢谢!
答案 0 :(得分:0)
将Frame控件更改为基于UserControl
而不是ContentControl
,应该可以解决您在Blend中看到的行为。我不确定你是如何使用你的控件的,但是如果你不能使用UserControl,你可能想要包含一些上下文。