UserControl имеет кнопку с Style = "{StaticResource MenuIconByttonStyle}", определенную в App.xaml, но использование этого UserControl в окне xaml дает ошибку:
'MenuButton' TargetType does not match type of element 'Button'
Не уверен, на что ссылается MenuButton, так как я нигде не могу найти это определение.
Если я использую StaticResource MenuIconButtonStyle2 или FlatToolbarButton, я не получаю эту ошибку.
Почему это может быть?
Приложение.xaml:
<Application.Resources>
<Style x:Key = "FlatToolbarButton" TargetType = "Button">
<Setter Property = "Width" Value = "16"/>
<Setter Property = "Height" Value = "16"/>
<Setter Property = "BorderThickness" Value = "0"/>
<Setter Property = "BorderBrush" Value = "{x:Null}"/>
<Setter Property = "Padding" Value = "0"/>
<Setter Property = "Margin" Value = "0"/>
</Style>
<Style x:Key = "MenuIconButtonStyle" TargetType = "Button" BasedOn = "{StaticResource FlatToolbarButton}" >
<Setter Property = "Background" Value = "Red"/>
<Setter Property = "Foreground" Value = "Red"/>
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate>
<Grid Background = "#333333">
<Border CornerRadius = "0" BorderThickness = "0" BorderBrush = "#333333">
<Image Source = "{StaticResource MenuIcon}" Stretch = "UniformToFill"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property = "IsMouseOver" Value = "True">
<Setter Property = "Cursor" Value = "Hand"/>
<Setter Property = "Template">
<Setter.Value>
<ControlTemplate>
<Grid Background = "Aqua">
<Border CornerRadius = "0" BorderThickness = "1" BorderBrush = "Aqua">
<Image Source = "{StaticResource MenuIcon}" Stretch = "UniformToFill"/>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
<Style x:Key = "MenuIconButtonStyle2" TargetType = "Button" BasedOn = "{StaticResource FlatToolbarButton}" >
<Setter Property = "Background" Value = "{StaticResource MenuIconBrush}"/>
</Style>
TradeListUC.xaml:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height = "18"/>
<RowDefinition Height = "*"/>
</Grid.RowDefinitions>
<DockPanel Grid.Row = "0" Background = "#333333" >
<Label x:Name = "TitleLabel" FontSize = "12" Content = "Trade List" Height = "16" Width = "100"
VerticalAlignment = "Top" Padding = "4,0,0,0" Foreground = "White" />
<StackPanel DockPanel.Dock = "Right" HorizontalAlignment = "Right" Orientation = "Horizontal" >
<TextBox x:Name = "SymbolEntryTb" Width = "100" Margin = "0,0,1,0"
Background = "#999999" BorderBrush = "#AAAAAA"
HorizontalAlignment = "Right" Padding = "0,-1,0,0" />
<Button x:Name = "MenuBtn" Style = "{StaticResource MenuIconButtonStyle}">
</Button>
</StackPanel>
</DockPanel>
MainWindow.xaml:
<TabItem Header = "Trades">
<Grid>
<UC:TradeListUC/>
</Grid>
</TabItem>
@grek40 Без разницы. Но только что узнал, что переименование ключа стиля во что-то отличное от MenuIconButtonStyle заставило ошибку исчезнуть. Очень странно..
Вы должны очистить свое решение от всех сгенерированных файлов (полного перестроения недостаточно). Но, возможно, MenuIconButtonStyle уже используется где-то во фреймворке. Когда простое переименование решает все, возможностей много. Возможно, я смогу повторить это позже, но не сейчас.
@grek40 Чистое решение не имело значения. Других ссылок на это имя я не нашел. Не критично, так как он работает с другим именем.
@bretddog: У вас, вероятно, где-то определен другой MenuIconButtonStyle с другим TargetType. Найдите его в своем решении. Используете ли вы сторонние пакеты?





Что произойдет, если вы добавите
TargetTypeкControlTemplate?