如何实现一个文本框,在未聚焦时显示 FullName,并在单击 WPF C# 时将名称拆分为 FirstName、MiddleName 和 LastName?

问题描述 投票:0回答:1

在我的 WPF C# 应用程序中,我创建了一个显示客户姓名的文本框。姓名由名字、中间名和姓氏组成。我想要实现的是,文本框在没有键盘焦点时显示全名(即连接在一起的 3 个名称,用空格分隔),并在全名文本框内的 3 个不同文本框中显示 3 个名称。 FullName 文本框获得键盘焦点。 我尽了最大努力并实现了控制,但我无法实现的是获取数据并保存数据更改。

这是我的数据库脚本:

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

这里是github中的示例代码

c# wpf xaml material-design-in-xaml
1个回答
0
投票

您正在用错误的值覆盖

DataContext
的正确
ContentControl
。这就是为什么你的绑定无法解析的原因。

ContentControl.Content
属性的值为全名:

<ContentControl Content="{Binding Path=FullName}" />

要知道的重要部分是

DataContext
ContentControl
是从
Window
继承的,因此是
CustomerModel
实例。

到目前为止一切顺利。但是在您的

ControlTemplate
中,您覆盖了继承的
DataContext
并将其设置为
Content
属性的值。该值是全名(来自
CustomerModel.FullName
):

<ControlTemplate x:Key="MultiTextBoxTemplate" TargetType="ContentControl">
  <Grid DataContext="{TemplateBinding Content}">

要使其工作,只需不要覆盖(正确的)

DataContext

<ControlTemplate x:Key="MultiTextBoxTemplate" TargetType="ContentControl">

  <!-- DataContext is inherited from the Window and is the CustomerModel -->
  <Grid>

现在您的绑定将成功使用

CustomerModel
作为绑定源。

© www.soinside.com 2019 - 2024. All rights reserved.