在我的WPF C#应用程序中,我创建了一个显示客户名称的文本框。名称由FirstName,MiddleName和LastName组成。我想实现的是显示全名的文本框(这是三个名字连在一起,被空间分隔)当它不't有一个键盘焦点,并显示3个名字在3个不同的文本框内的全名文本框时,全名文本框得到键盘焦点。实现了控制,但我无法实现的是获取数据,并保存数据更改。
以下是我的数据库日志:
USE [MyDB]
GO
/****** Object: Table [dbo].[Customers] Script Date: 12/7/2023 7:57:47 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customers](
[ID] [int] IDENTITY(1,1) NOT NULL,
[FirstName] [nvarchar](50) NULL,
[MiddleName] [nvarchar](50) NULL,
[LastName] [nvarchar](50) NULL,
CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Customers] ON
GO
INSERT [dbo].[Customers] ([ID], [FirstName], [MiddleName], [LastName]) VALUES (1, N'Dees', N'Niis', N'Muus')
GO
INSERT [dbo].[Customers] ([ID], [FirstName], [MiddleName], [LastName]) VALUES (2, N'Jiis', N'Kiss', N'Juss')
GO
INSERT [dbo].[Customers] ([ID], [FirstName], [MiddleName], [LastName]) VALUES (3, N'Nyuus', N'Nyap', N'Kip')
GO
SET IDENTITY_INSERT [dbo].[Customers] OFF
GO
字符串
2条答案
按热度按时间mccptt671#
以下是你需要做的事情,以使你的示例应用程序工作:
1.将模型对象绑定到
ContentControl
:字符串
1.将绑定到
FullName
属性的Mode
设置为OneWay
:型
1.在
CustomerModel
的OnChange()
方法中引发FullName
属性的PropertyChanged
事件:型
8dtrkrch2#
你用一个错误的值覆盖了
ContentControl
中正确的DataContext
。这就是为什么你的绑定无法解析。ContentControl.Content
属性的值是全名:字符串
需要知道的重要部分是,
ContentControl
的DataContext
继承自Window
,因此是CustomerModel
示例。到目前为止一切顺利。但是在
ControlTemplate
中,您覆盖了继承的DataContext
并将其设置为Content
属性的值。此值是全名(来自CustomerModel.FullName
):型
要使它工作,只需不覆盖(正确的)
DataContext
:型
现在您的绑定将成功地使用
CustomerModel
作为绑定源。