WPF MetroWindow 按钮单击给出编译错误 "does not contain a definition for..."
WPF MetroWindow Button Click gives compile error "does not contain a definition for..."
好的,所以我的项目正在构建为 ClassLibrary,我想要发生的是当我单击 CoreAuthKeyTestButton 时在 ExternalChat.SettingsWindow class 中调用了一个函数。请记住,CoreAuthKeyTestButton_Click 函数是由 Visual Studio 自动生成的,我只是输入了一行代码来输出它正在运行。
我正在制作的程序是另一个应用程序的插件,应该没有关系,但想指出这一点。
Visual Studio 说这段代码没问题。我构建它时没有错误。但是,当我加载插件时出现此错误:
SettingsWindow.xaml(41,92) : error CS1061: 'SettingsWindow' does not contain a definition for 'CoreAuthKeyTestButton_Click' and no extension method 'CoreAuthKeyTestButton_Click' accepting a first argument of type 'SettingsWindow' could be found (are you missing a using directive or an assembly reference?)
这是SettingsWindow.xaml
<Controls:MetroWindow
x:Class="ExternalChat.SettingsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
Title="ExternalChat Settings"
Height="300"
Width="800"
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<!-- Accent and AppTheme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid Background="#FF2B2B2B">
<Grid.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
</Grid.Resources>
<TabControl>
<TabItem Header="Home" IsSelected="True">
<Grid Height="218" VerticalAlignment="Top" Margin="21,0,13,0">
<TextBlock x:Name="HomeTextBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Boy, it sure is unfortunate I still haven't been properly named. What kind of name is ExternalChat? I should have some fancy name based off of FFXIV lore. If only someone would name me..." VerticalAlignment="Top"/>
</Grid>
</TabItem>
<TabItem Header="Keys">
<Grid HorizontalAlignment="Left" Height="218" VerticalAlignment="Top" Width="760" Margin="15,0,0,0">
<Label x:Name="CoreAuthKeyLabel" Content="Core Auth Key:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBox x:Name="CoreAuthKeyInput" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="400" Margin="93,1,0,0" Text="{Binding Path=CoreAuthKey}"/>
<Button x:Name="CoreAuthKeyTestButton" Content="Save & Test Key" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Margin="492,1,0,0" BorderThickness="1" Height="26" Click="CoreAuthKeyTestButton_Click" />
<TextBlock x:Name="CoreAuthKeyTestResult" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Margin="597,5,0,0" Width="150" Text="{Binding Path=CoreAuthKeyTest}"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Controls:MetroWindow>
这是 SettingsWindow.xaml.cs 文件:
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using MahApps.Metro;
using MahApps.Metro.Controls;
using Buddy.Overlay.Commands;
using System.Windows.Input;
using ff14bot.Helpers;
namespace ExternalChat
{
public partial class SettingsWindow
{
public static string CoreAuthKey { get; set; }
public static string CoreAuthKeyTest { get; set; }
public SettingsWindow()
{
InitializeComponent();
}
protected void CoreAuthKeyTestButton_Click(object sender, RoutedEventArgs e)
{
Logging.Write("Save Core Auth Key Button Click Called");
}
}
}
任何帮助将不胜感激,我无法弄清楚我做错了什么,我认为这是我的 xaml 文件中的某些内容的问题,但我无法找出它是什么.
using MahApps.Metro.Controls;
//
public partial class MainWindow : MetroWindow
你的将是
public partial class SettingsWindow : MetroWindow
我找到了解决方案!
本主题说明:
在我的具体实例中,我将按钮更改为
<Button Name="CoreAuthKeyTestButton" Content="Save & Test Key" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Margin="492,1,0,0" BorderThickness="1" Height="26" />
并将我的 SettingsWindow.xaml.cs 更改为:
public SettingsWindow()
{
InitializeComponent();
CoreAuthKeyTestButton.Click += (s, e) => { CoreAuthKeyTestButtonClickAction(); };
}
private void CoreAuthKeyTestButtonClickAction()
{
Logging.Write("Save Core Auth Key Button Click Called");
}
希望这对遇到问题的人有所帮助。
好的,所以我的项目正在构建为 ClassLibrary,我想要发生的是当我单击 CoreAuthKeyTestButton 时在 ExternalChat.SettingsWindow class 中调用了一个函数。请记住,CoreAuthKeyTestButton_Click 函数是由 Visual Studio 自动生成的,我只是输入了一行代码来输出它正在运行。
我正在制作的程序是另一个应用程序的插件,应该没有关系,但想指出这一点。
Visual Studio 说这段代码没问题。我构建它时没有错误。但是,当我加载插件时出现此错误:
SettingsWindow.xaml(41,92) : error CS1061: 'SettingsWindow' does not contain a definition for 'CoreAuthKeyTestButton_Click' and no extension method 'CoreAuthKeyTestButton_Click' accepting a first argument of type 'SettingsWindow' could be found (are you missing a using directive or an assembly reference?)
这是SettingsWindow.xaml
<Controls:MetroWindow
x:Class="ExternalChat.SettingsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
Title="ExternalChat Settings"
Height="300"
Width="800"
GlowBrush="{DynamicResource AccentColorBrush}"
WindowStartupLocation="CenterScreen">
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
<!-- Accent and AppTheme setting -->
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseDark.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
<Grid Background="#FF2B2B2B">
<Grid.Resources>
<ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.AnimatedSingleRowTabControl.xaml" />
</Grid.Resources>
<TabControl>
<TabItem Header="Home" IsSelected="True">
<Grid Height="218" VerticalAlignment="Top" Margin="21,0,13,0">
<TextBlock x:Name="HomeTextBlock" HorizontalAlignment="Left" TextWrapping="Wrap" Text="Boy, it sure is unfortunate I still haven't been properly named. What kind of name is ExternalChat? I should have some fancy name based off of FFXIV lore. If only someone would name me..." VerticalAlignment="Top"/>
</Grid>
</TabItem>
<TabItem Header="Keys">
<Grid HorizontalAlignment="Left" Height="218" VerticalAlignment="Top" Width="760" Margin="15,0,0,0">
<Label x:Name="CoreAuthKeyLabel" Content="Core Auth Key:" HorizontalAlignment="Left" VerticalAlignment="Top"/>
<TextBox x:Name="CoreAuthKeyInput" HorizontalAlignment="Left" Height="23" TextWrapping="Wrap" VerticalAlignment="Top" Width="400" Margin="93,1,0,0" Text="{Binding Path=CoreAuthKey}"/>
<Button x:Name="CoreAuthKeyTestButton" Content="Save & Test Key" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Margin="492,1,0,0" BorderThickness="1" Height="26" Click="CoreAuthKeyTestButton_Click" />
<TextBlock x:Name="CoreAuthKeyTestResult" HorizontalAlignment="Left" TextWrapping="Wrap" VerticalAlignment="Top" Margin="597,5,0,0" Width="150" Text="{Binding Path=CoreAuthKeyTest}"/>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Controls:MetroWindow>
这是 SettingsWindow.xaml.cs 文件:
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Threading;
using MahApps.Metro;
using MahApps.Metro.Controls;
using Buddy.Overlay.Commands;
using System.Windows.Input;
using ff14bot.Helpers;
namespace ExternalChat
{
public partial class SettingsWindow
{
public static string CoreAuthKey { get; set; }
public static string CoreAuthKeyTest { get; set; }
public SettingsWindow()
{
InitializeComponent();
}
protected void CoreAuthKeyTestButton_Click(object sender, RoutedEventArgs e)
{
Logging.Write("Save Core Auth Key Button Click Called");
}
}
}
任何帮助将不胜感激,我无法弄清楚我做错了什么,我认为这是我的 xaml 文件中的某些内容的问题,但我无法找出它是什么.
using MahApps.Metro.Controls;
//
public partial class MainWindow : MetroWindow
你的将是
public partial class SettingsWindow : MetroWindow
我找到了解决方案!
本主题说明:
在我的具体实例中,我将按钮更改为
<Button Name="CoreAuthKeyTestButton" Content="Save & Test Key" HorizontalAlignment="Left" VerticalAlignment="Top" Width="100" Margin="492,1,0,0" BorderThickness="1" Height="26" />
并将我的 SettingsWindow.xaml.cs 更改为:
public SettingsWindow()
{
InitializeComponent();
CoreAuthKeyTestButton.Click += (s, e) => { CoreAuthKeyTestButtonClickAction(); };
}
private void CoreAuthKeyTestButtonClickAction()
{
Logging.Write("Save Core Auth Key Button Click Called");
}
希望这对遇到问题的人有所帮助。