您好我正在尝试为我正在开发的项目学习一些WPF和C#。我意识到在工作了一段时间后我将使用几个相同的项目,我认为创建我自己的类以使其更容易使用是合适的。但是现在我无法像在窗口中执行此操作那样在后面的代码中引用XAML中定义的元素。我得到的错误是“无法在ContactPanel.xaml.cs中解析符号'ThaButton”:
using System.Windows.Controls;
namespace WPF_OOM
{
public partial class ContactPanel : ContentControl
{
public Contact Person { get; set; }
public ContactPanel()
{
ThaButton.Content = "test";
}
}
}
我的ContactPanel.xaml
<UserControl x:Class="WPF_OOM.ContactPanel:UserControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DockPanel x:Name="dp">
<TextBlock x:Name="NameTextBlock" Text="testtesttest" DockPanel.Dock="Left"></TextBlock>
<Button x:Name="ThaButton" Content="button" DockPanel.Dock="Right"></Button>
</DockPanel>
</UserControl>
希望我已经很好地解释了我的问题。我可能对这个问题采取了错误的方法,让我知道是否有更好的方法。
干杯
答案 0 :(得分:0)
从 x中移除:UserControl :Class =&#34; WPF_OOM.ContactPanel:UserControl&#34; 所以它看起来像 x:Class =&# 34; WPF_OOM.ContactPanel&#34; 强>
同样在你的代码背后,你有ContactPanel继承表单ContentControl,但在你的xaml中,它继承自UserControl。这些基类必须匹配。因此,将它们更改为UserControl或ContentControl
看起来您创建了一个单独的.cs文件?我建议使用xaml文件生成的代码。一种方法是在xaml编辑器中右键单击并选择“查看代码”。如果您导入了xaml和.cs文件,那么重新加载项目或重新启动visual studio应该在解决方案资源管理器中再次组合它们(如果它们还没有)。
我建议查看Model-View-ViewModel或MVVM模式。 WPF的效果相当不错;)
希望这有助于您入门。