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> 展开
展开全部
<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
AiPPT
2024-09-19 广告
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图...
点击进入详情页
本回答由AiPPT提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询