datacontext 相关问题

DataContext用于WPF,Silverlight和各种其他.NET技术。当与WPF或Silverlight一起使用时,DataContext是一个对象,其中包含表单(或Silverlight中的页面)用作其UI元素的显示源的数据。

如何判断新创建的对象是否有用户设置的属性值

这可能是软件设计或模式问题。 使用 LINQ to SQL 的 C# WinForms 解决方案。 有一个表单允许用户编辑 Customer 对象的属性值。 如果用户想要创建...

回答 4 投票 0


LINQ to SQL DataContext 和连接问题

我的网站使用 LINQ to SQL 来访问两个数据库。第一个数据库是网站(我将其称为 WEBSITE)数据,第二个数据库是交易历史记录(我将其称为 WEBSITE_HIS...

回答 3 投票 0

MAUI MVVM xaml“找不到用于绑定的 DataContext”。更新的值未显示

我有两个标签字段 TabName 和 DisplayDate 以及绑定到 ViewModel 的 Collection Tasks,并且标签字段的值最初已设置,但不会出现更改。将鼠标悬停在标签上...

回答 1 投票 0

将选定的行从 WPF DataGrid 发送到 SQL 表时遇到困难

我的 WPF 应用程序遇到一个问题,我需要将选定的行从 DataGrid 发送到 SQL 数据库表。尽管实现了必要的逻辑,但负责处理的方法......

回答 1 投票 0

dataContext 有问题,它没有在数据网格中显示

看来我的dataContext有问题。假设我有一个由实体框架以数据库优先方法生成的类 tblPerson。 像这样的东西: 公共部分类 tblPerson ...

回答 1 投票 0

将 DataContext 传递给 UserControl

我有一个包含数据集的页面: protected void Page_Load(对象发送者,EventArgs e) { MyDefinedDataContext mydatacont = new MyDefinedDataContext(); } 我想传递这个数据上下文

回答 3 投票 0

从代码隐藏设置用户控件的DataContext

这应该很简单,但是它会让 VS2008 陷入严重的循环。 我正在尝试使用 MVVM 的 WPF,虽然我已经开发了大约 15 年,并且有一个比较,但我完全是新手。科学。

回答 3 投票 0

DataContext 始终只读,即使存在主键

我正在尝试更新数据库中的值,但 IsReadOnly 属性始终返回 True。据微软称,该属性 获取一个值,该值指示

回答 1 投票 0

DataContext 覆盖分配的公共变量

我目前正在使用 .NET 6 WPF,并使用自定义类并分配为 DataContext 时出现一些奇怪的行为。 我的代码如下所示: 公共部分类 EditImage :窗口 { 公开...

回答 1 投票 0

在视图模型和视图之间使用 MVVM 进行 Wpf 数据上下文绑定

我刚刚开始学习 MVVM,这似乎是基本问题,但我花了一整天的时间试图弄清楚它。 我有一个解决方案,其中包含 3 个项目,一个用于 Model,一个用于 ViewModel ...

回答 3 投票 0

如何获取 WinUI3 中 ItemsRepeater 内 UI 元素的上下文

我正在使用 WinUI3 和 C# 开发一个应用程序。 我想将快捷方式的动态设置渲染添加到我的应用程序中。因此我使用 ItemsRepeater 和 DataTemplate 来渲染

回答 1 投票 0

数据上下文冲突

<UserControl x:Class="WatermarkTextBox" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="30" d:DesignWidth="250"> <UserControl.Resources> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> </UserControl.Resources> <Border> <Grid x:Name="grid"> <TextBlock Text="{Binding Watermark, FallbackValue=This prompt dissappears as you type...}" Visibility="{Binding ElementName=txtUserEntry, Path=Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}}" /> <TextBox Name="txtUserEntry" Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" /> </Grid> </Border> </UserControl> 上面的代码显示了我的 WatermarkTextBox 控件。在文件后面的代码中,我设置了 DataContext。我省略了控件 DP 的所有代码。 public WatermarkTextBox() { InitializeComponent(); grid.DataContext = this; } 我必须将 DataContext 绑定到网格,否则水印和实际文本的 Text 属性将不会显示。现在的问题是我无法将Background的Border设置在Grid之外。 我尝试了下面的代码,但只设置了 Background 的 Border,而不是水印和实际文本。 public WatermarkTextBox() { InitializeComponent(); this.DataContext = this; grid.DataContext = this; } 在这样的 UserControl 中,您永远不应该将 DataContext 显式设置为 this 或其他任何值,因为当您在应用程序中的某个位置使用 UserControl 时,DataContext 通常是在外部设置的。外部应用的 DataContext 通常是应用程序视图模型(的一部分)。 您应该更改内部绑定,以便它们使用显式 RelativeSource: <TextBlock Text="{Binding Path=Watermark, RelativeSource={RelativeSource AncestorType=UserControl}, FallbackValue=This prompt dissappears as you type...}" Visibility="{Binding ElementName=txtUserEntry, Path=Text.IsEmpty, Converter={StaticResource BooleanToVisibilityConverter}}" /> <TextBox Name="txtUserEntry" Text="{Binding Path=Text, UpdateSourceTrigger=PropertyChanged, RelativeSource={RelativeSource AncestorType=UserControl}}" /> 然后从 UserControl 的构造函数中删除任何 DataContext 赋值。 参见例如这个答案(以及许多其他类似的答案)详细讨论了这个主题。 @Clemens 答案的附录: 为了避免为每个控件设置 RelativeSource={RelativeSource AncestorType=UserControl},请在用户控件中提供一个根元素来获取 DataContext。 <UserControl x:Class="UserControlBindingIssue.TestUserControl" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:UserControlBindingIssue" d:DataContext="{d:DesignInstance Type=local:TestUserControl, IsDesignTimeCreatable=True}" mc:Ignorable="d"> <ContentControl DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:TestUserControl}}}"> <TextBox Width="100" Text="{Binding Text, UpdateSourceTrigger=PropertyChanged}" /> <!-- Other controls --> </ContentControl> </UserControl>

回答 2 投票 0

为什么Loaded事件中DataContext为空?

我正在使用 Activator.Createinstance 来创建一个对象。我创建对象有两种情况。一种是在默认状态下创建对象而不关心功能的情况。 ...

回答 1 投票 0

如果底层 DataContext 为空,如何隐藏控件?

我的视图模型中有一个对象,它有很多属性,其中一些属性有时会为空。如果这些特定控件为空,我不想只显示某些控件。我该怎么去

回答 7 投票 0

从 ViewModel 绑定标签文本不起作用

我目前正在学习 .NET MAUI,并且遇到了数据绑定问题。我已经阅读了 Microsoft 文档上有关数据绑定的部分,但我仍然不知道为什么它不...

回答 2 投票 0

多个视图使用同一个 ViewModel

我编写了一个WPF应用程序。其有以下观点: AddStockView.cs(用于添加股票) StockBox.cs(代表显示所有股票的组合框)。 View.cs(用于主窗口......

回答 1 投票 0

为元素指定 DataContext 使用 AvaloniaUI 重置其绑定值

我已经将不同用户控件中某些文本框的值绑定到视图模型中的某些值,仅来自其中一个。在一个名为“PreferencesView&q...

回答 0 投票 0

放置在网格列中的按钮在悬停时不可点击或改变颜色

所以总的来说,我对 WPF 和 XAML 还很陌生,而且我的一个控件(一个按钮)有问题。对于某些背景,我有一个具有此网格结构的 XAML 文件: 所以总的来说,我对 WPF 和 XAML 还很陌生,而且我的一个控件(一个按钮)有问题。对于某些背景,我有一个具有这种网格结构的 XAML 文件: <Grid.ColumnDefinitions> <ColumnDefinitions Width=Auto /> <ColumnDefinitions Width=Auto /> <ColumnDefinitions Width=Auto /> <ColumnDefinitions Width=Auto /> <ColumnDefinitions Width=* /> <ColumnDefinitions Width=Auto /> <ColumnDefinitions Width=Auto /> <Grid.ColumnDefinitions> 所以,在 XAML 代码中,每个 Grid.Column 都分配了一个不同的控件(ContentControl、DropDown 等)但是,当我将两个按钮放在 DockPanel 或 StackPanel 中并为 DockPanel 或 StackPanel 分配一个 Grid.Column 时,当我将鼠标悬停在按钮上,它们不会开始变为浅蓝色(我猜这是默认的 MouseOver 颜色),也无法点击。每个按钮都绑定到一个 DataContext,当按钮的 StackPanel 或 DockPanel 未分配 Grid.Column 时,该 DataContext 起作用(它基本上被推到包含它的表单中的网格左侧)。但是,当它被赋予一个 GridColumn 编号并且前面的 GridColumn 元素具有星号时,按钮不可单击并且当鼠标悬停在按钮上时根本不会改变颜色。我尝试了我能想到的一切(在 XAML 中更改 Zindex,试验网格定义的大小选项,...)。同样,我对 XAML 和 WPF 还是很陌生。有谁知道我可能会遗漏什么? 这里是 GridColumn 定义的例子: <ContentControl Style="{StaticResource ....}" Grid.Column="4" Content="{Binding .....}"/> <DockPanel Grid.Column="5" <Button Style="{StaticResource ....}" Command = {Binding Path = DataContext.somecommandname, RelativeSource="..." CommandParameter="{Binding"} Visibility="" /> <Button ...../> </DockPanel> 所以,基本上上面的 ContentSource 在资源文件中定义了大约 500 px 的最大宽度,并且它有星号 (*)。然而,按钮似乎不喜欢出现在任何带有星号的元素后面(我尝试了各种元素),并且不会起作用。

回答 0 投票 0

将 AuthenticationStateProvider 传递给 DataContext

我正在使用 Blazor Server,我需要向所有数据库记录添加审计信息。 为此,我覆盖了 SaveChanges/SaveChangesAsync 以添加审核详细信息 公共覆盖任务 我正在使用 Blazor Server,我需要向所有数据库记录添加审计信息。 为此,我覆盖了 SaveChanges/SaveChangesAsync 以添加审计细节 public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default) { SetAudit(); return base.SaveChangesAsync(cancellationToken); } /// <summary> /// Populate the audit part of the db records /// </summary> /// <returns></returns> public override int SaveChanges() { SetAudit(); return base.SaveChanges(); } private async Task SetAudit() { var state = await _auth.GetAuthenticationStateAsync(); var userId = state.User.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value ?? "seed"; var tracker = ChangeTracker; 问题是如何让 IOC 将 AuthenticationStateProvider 传递给 DataContext。 public DataContext(DbContextOptions<DataContext> options, AuthenticationStateProvider auth) : base(options) { _auth = auth; } 它不起作用,因为 DataContext 是从 IDesignTimeDbContextFactory 中创建的 public class DesignTimeFactory : IDesignTimeDbContextFactory<DataContext> { public DataContext CreateDbContext(string[] args, AuthenticationStateProvider auth) { var optionsBuilder = new DbContextOptionsBuilder<DataContext>(); const string connectionString = @"server=localhost\\sqlexpress;database=bedbrigade;trusted_connection=SSPI;Encrypt=False"; optionsBuilder.UseSqlServer(connectionString); return new DataContext(optionsBuilder.Options, auth); } }

回答 0 投票 0

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