Wpf用模板改变空间的样式
我利用wpf里面的模板ControlTemplate去改变控件Menu里面所有MenuItem的样式,可是当我成功改变了第一行的MenuItem样式之后,我发现点击第一行...
我利用wpf里面的模板ControlTemplate去改变控件Menu里面所有MenuItem的样式,可是当我成功改变了第一行的MenuItem样式之后,我发现点击第一行的MenuItem,原本应该出现下拉MenuItem却完全没有出现,完全没有反应。 下面是我得Xaml文件里的代码,请告诉我哪里出问题,正确的做法是什么??我也是刚接触wpf。
<Menu Background="White">
<Menu.Resources>
<ControlTemplate x:Key="MenuItemTemplate">
<Grid>
<Ellipse Width="{TemplateBinding MenuItem.Width}" Height="{TemplateBinding MenuItem.Height}" >
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" />
<GradientStop Offset="1" Color="Gray"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="10"/>
</Viewbox>
<Ellipse Width="30" Height="17">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="White"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="15" Content="{TemplateBinding MenuItem.Tag}"/>
</Viewbox>
</Grid>
</ControlTemplate>
</Menu.Resources>
<MenuItem Height="36" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="文件">
<MenuItem Height="30" Width="30" />
<MenuItem />
</MenuItem>
</Menu> 展开
<Menu Background="White">
<Menu.Resources>
<ControlTemplate x:Key="MenuItemTemplate">
<Grid>
<Ellipse Width="{TemplateBinding MenuItem.Width}" Height="{TemplateBinding MenuItem.Height}" >
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" />
<GradientStop Offset="1" Color="Gray"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="10"/>
</Viewbox>
<Ellipse Width="30" Height="17">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="White"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="15" Content="{TemplateBinding MenuItem.Tag}"/>
</Viewbox>
</Grid>
</ControlTemplate>
</Menu.Resources>
<MenuItem Height="36" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="文件">
<MenuItem Height="30" Width="30" />
<MenuItem />
</MenuItem>
</Menu> 展开
1个回答
展开全部
<Menu Background="White">
<Menu.Resources>
<ControlTemplate x:Key="MenuItemTemplate" TargetType="{x:Type MenuItem}">
<Grid>
<Ellipse Width="{TemplateBinding MenuItem.Width}" Height="{TemplateBinding MenuItem.Height}" >
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" />
<GradientStop Offset="1" Color="Gray"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="10"/>
</Viewbox>
<Ellipse Width="30" Height="17">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="White"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="15" Content="{TemplateBinding MenuItem.Tag}"/>
</Viewbox>
<Popup IsOpen="{TemplateBinding IsSubmenuOpen}" Placement="Bottom" AllowsTransparency="True">
<Border Margin="1"
>
<StackPanel IsItemsHost="True"></StackPanel>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Menu.Resources>
<MenuItem Height="36" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="文件">
<MenuItem Height="30" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="打开" />
<MenuItem Height="30" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="保存" />
</MenuItem>
</Menu>
不知道符不符合要求,其实你可以用Expression Blend改它的样式,很方便,这是照着你那个改的,看那个stackPanel 有个isItemHost,这是它的子菜单的宿主,你那个没有
<Menu.Resources>
<ControlTemplate x:Key="MenuItemTemplate" TargetType="{x:Type MenuItem}">
<Grid>
<Ellipse Width="{TemplateBinding MenuItem.Width}" Height="{TemplateBinding MenuItem.Height}" >
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" />
<GradientStop Offset="1" Color="Gray"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="10"/>
</Viewbox>
<Ellipse Width="30" Height="17">
<Ellipse.Fill>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
<GradientStop Offset="0" Color="White"/>
<GradientStop Offset="1" Color="Transparent"/>
</LinearGradientBrush>
</Ellipse.Fill>
</Ellipse>
<Viewbox>
<ContentControl Margin="15" Content="{TemplateBinding MenuItem.Tag}"/>
</Viewbox>
<Popup IsOpen="{TemplateBinding IsSubmenuOpen}" Placement="Bottom" AllowsTransparency="True">
<Border Margin="1"
>
<StackPanel IsItemsHost="True"></StackPanel>
</Border>
</Popup>
</Grid>
</ControlTemplate>
</Menu.Resources>
<MenuItem Height="36" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="文件">
<MenuItem Height="30" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="打开" />
<MenuItem Height="30" Width="60" Template="{ StaticResource MenuItemTemplate}" Tag="保存" />
</MenuItem>
</Menu>
不知道符不符合要求,其实你可以用Expression Blend改它的样式,很方便,这是照着你那个改的,看那个stackPanel 有个isItemHost,这是它的子菜单的宿主,你那个没有
追问
还能留个QQ啊,我刚接触wpf想多多交流,我也想过用blend,但是不太会用尝试过没成功
追答
78185442
ZESTRON
2024-09-04 广告
2024-09-04 广告
在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸...
点击进入详情页
本回答由ZESTRON提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询