问题描述
因此,在为已经出现的现有平台构建 UserControl 时会出现此问题。在这种情况下,当涉及到 ContextMenu:s 时,为此应用程序构建的控件似乎继承了一些不需要的样式。
无论如何,我有一个像下面这样的扩展 ListView 控制器,因为我需要随时准备一些额外的功能。
using System.Windows.Controls;
namespace UI_Designs
{
public partial class ExtListView : ListView
{
public ExtListView()
{
InitializeComponent();
}
}
...
}
<ListView x:Class="UI_Designs.ExtListView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
...
</Grid>
</ListView>
然后,在 UserControl 中使用这个扩展的 ListView,就像这样,并添加一个 ContextMenu 到它。这就是它开始的地方。
<UserControl x:Class="UI_Designs.TestControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:UI_Designs"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<local:ExtListView>
<local:ExtListView.View>
<GridView>
<GridViewColumn Header="Test"/>
</GridView>
</local:ExtListView.View>
<local:ExtListView.ItemContainerStyle>
<Style targettype="{x:Type ListViewItem}">
<Setter Property="ContextMenu" Value="{Binding ContextMenu}"/>
</Style>
</local:ExtListView.ItemContainerStyle>
</local:ExtListView>
</Grid>
</UserControl>
通过这样做,ContextMenu 似乎继承了一些不需要的样式行为,例如不显示鼠标悬停标记和颜色。
场景一: 是否可以从它自己的扩展 ListView 类中设置或覆盖关联 ContextMenu 的样式? 因为我几乎知道我想要和不想要什么样的造型。每次我想要为这种特殊类型的扩展 ListView 使用任何类型的 ContextMenu 时,都不必重做所有这些样式。
场景 2: 还是使用 ContextMenu 的扩展版本来控制样式的更好选择?
我已经尝试使用 Loaded 事件来查找设置它,但不确定这是不是这样做的方法,因为这种方式似乎发生了很多事情。
private void ExtListView_Loaded(object sender,RoutedEventArgs e)
{
gridView = View as GridView;
if (gridView != null)
{
Style style = this.FindResource(typeof(ContextMenu)) as Style;
style = Resources["TestContextMenu"] as Style;
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)