data-binding 相关问题

将两个数据/信息源绑定在一起并使它们保持同步的一般技术。

Scala 模块 2.12.3 需要 Jackson Databind 版本 >= 2.12.0 和 < 2.13.0 but I have databind 2.12.3

对于一个项目,我正在使用带有 kafka 的 Spark 结构化流。 我有这个配置: 3.1.1 1.7.7 <...

回答 2 投票 0

用户控件内复选框的 IsChecked 绑定不适合

在UserControl.xaml中: 在 UserControl.xaml 中: <UserControl x:Class="OurNameSpace.SystemCalibration.Controls.PortSelector" xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml xmlns:mc=http://schemas.openxmlformats.org/markup-compatibility/2006 xmlns:d=http://schemas.microsoft.com/expression/blend/2008 xmlns:local="clr-namespace:OurNamespace.SystemCalibration.Controls" xmlns:converters="clr-namespace:OurNamespace.SystemCalibration.Converters" xmlns:sys="clr-namespace:System;assembly=mscorlib" x:Name="portSelector" mc:Ignorable="d"> <Grid ….. <StackPannel …. <CheckBox Content="Port 4" Margin="0 5 0 5" IsChecked="{Binding cb4_IsChecked, ElementName=portSelector, UpdateSourceTrigger=PropertyChanged}"> <CheckBox.Visibility> <MultiBinding Converter="{StaticResource maxPortsToVisibilityConverter}"> <Binding Path="MaxPorts" ElementName="portSelector"/> <Binding Source="{StaticResource port4}"/> </MultiBinding> </CheckBox.Visibility> </CheckBox> </StackPanel> </Grid> 在 usercontrol.xaml.cs 中: public partial class PortSelector : UserControl { public static readonly DependencyProperty cb4_isCheckedProperty = DependencyProperty.Register(nameof(cb4_IsChecked), typeof(bool), typeof(PortSelector)); public bool cb4_IsChecked { get => (bool)GetValue(cb4_isCheckedProperty); set { SetValue(cb4_isCheckedProperty, value); UpdatedSelectedPortsString(); } } } 如果我在调用“UpdatedSelectedPortsString”的线路上放置一个中断,则断点永远不会被命中。 此用户控件托管在 TabControl 内的另一个用户控件内。当我单击该复选框时,我希望执行依赖属性的 Set 部分,但该代码似乎根本没有被调用。我什至尝试向 IsChecked 绑定添加一个假值转换器,并且转换器内的代码确实执行,但设置器不执行。如果我不绑定 IsChecked,而是添加具有依赖属性的 Command 绑定,并将命令处理程序放在同一 usercontrol.xaml.cs 代码隐藏部分类中,它也可以工作。唯一似乎不起作用的是直接绑定 IsChecked。 您必须使用 PropertyChangedCallback 委托,如下所示: public static readonly DependencyProperty cb4_IsCheckedProperty = DependencyProperty.Register(nameof(cb4_IsChecked), typeof(bool), typeof(PortSelector), new PropertyMetadata(false, cb4_IsCheckedChangedCallback)); public bool cb4_IsChecked { get { return (bool)GetValue(cb4_IsCheckedProperty); } set { SetValue(cb4_IsCheckedProperty, value); } } private static void cb4_IsCheckedChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e) { PortSelector uc = d as PortSelector; uc.UpdatedSelectedPortsString(); } 每次 IsChacked 更改时都会调用“cb4_IsCheckedChangedCallback”方法。 如果这不起作用。此代码应该用于绑定: IsChecked="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:PortSelector}}, Path=cb4_IsChecked}"

回答 1 投票 0

尝试学习 WPF 和 MVVM,但遇到 DataContext 问题

完整代码 你好,我正在尝试在 MyAccountView 中获取此文本框 完整代码 嗨,我正在尝试在 MyAccountView 中获取此文本框 <User_Controls:ClearableTextBox Margin="5" x:Name="txtUsername" Placeholder="Username" Text="{Binding Username, Mode=TwoWay}"/> 显示VM中当前登录的用户集 private string originalUsername; private string username; public string Username { get { return username; } set { if (username != value) { username = value; OnPropertyChanged(nameof(Username)); } } } public MyAccountViewModel() { originalUsername = App.CurrentUser; Username = originalUsername; } 但是,当我进入 debuggin 时,视图中的数据上下文显示为空 public MyAccountView() { InitializeComponent(); DataContext = new MyAccountViewModel(); } 我已经成功地将登录中的文本替换为此自定义TB中的.Text属性,但是当我尝试在这里执行此操作时,它什么也没做 这是我需要在月底完成的课程项目,因此非常感谢任何帮助! ps-如果你想测试的话,用户密码设置为12345 设置txtUsername.Text = App.CurrentUser;有效,但是我无法通过绑定来完成此操作,因为数据上下文似乎为空 视图的 DataContext 不应该为 null,因为您在视图的构造函数中设置了它。 否则显示您放置断点的位置,表明它为空。 Binding Text="{Binding Username, Mode=TwoWay}" 不起作用,因为您在 UserControl“ClearableTextBox”构造函数中使用了反模式。 <User_Controls:ClearableTextBox Margin="5" x:Name="txtUsername" Placeholder="Username" Text="{Binding Username, Mode=TwoWay}"/> public ClearableTextBox() { DataContext = this; InitializeComponent(); } 由于您在构造函数中将用户控件的 DataContext 设置为自身,因此它现在无法“继承”它所在视图的 DataContext。 您可以查看这个答案,其中显示了如何正确操作。 ***编辑回复评论中的问题,无长度限制: DataContext 是绑定的默认源。 因此,当您编写 Text="{Binding Placeholder} 时,相当于说“绑定到此控件的源 DataContext 上的属性 Placeholder”。现在,由于您在 UserControl 的构造函数中删除了 DataContext = this ,它现在继承了它所在视图的 DataContext (因此在您的示例中为 MyAccountViewModel )。 MyAccountViewModel 没有属性 Placeholder,因此占位符为空(您的 IDE 输出中应该有一条消息)。 现在要解决此问题,您需要修复 Text="{Binding Placeholder},以便它使用您的 UserControl 作为源。要修复它,您可以使用我之前提到的答案。 这会给你一个像这样的绑定: Text="{Binding Path=Placeholder RelativeSource={RelativeSource Self}} 或者 Text="{Binding Path=Placeholder ElementName=myClearableTextBox}(最后一个,您必须在 xaml 中将 UserControl 命名为“myClearableTextBox”,如下所示:x:Name="myClearableTextBox")

回答 1 投票 0

WPF新手绑定问题

我刚刚在 WPF 中实现了一个点击计数器,我很好奇是否有更好的方法来做事情。 完整代码在这里: https://github.com/surferjeff/ClickCount/tree/main/WpfCounter 在后面的代码中...

回答 1 投票 0

通用可绑定属性无法正常工作

(开始之前:我使用的是.NET Framework 4.8) 我一直在 WPF 中闲逛,并且厌倦了不断键入用于绑定的属性。我现在正在使用代码片段...

回答 2 投票 0

WPF 中的 ComboBox 项 - 具有枚举值的数据绑定类属性

我有一个类“Uid_Id_Name”和一个枚举“E_UidIdName_Type” 公共类 Uid_Id_Name { 公共字符串 Uid { 获取;放; } =“”; 公共字符串 Id { 获取;放; } = &...

回答 2 投票 0

WPF 中带有绑定的自定义按钮的悬停颜色

我有这个自定义按钮,想要根据绑定应用按钮的背景颜色。至于按钮的用途,基本上这是一个分页按钮。当页面为

回答 1 投票 0

刷新 .NET MAUI 中的绑定

我有一个场景,使用 INotifyPropertyChanged 接口从 ViewModel 更新 View 是不合适的。 相反,我想明确刷新一些绑定。 在 WPF 中,请参阅...

回答 3 投票 0

Blazor 组件中复杂结构的高效数据绑定

我对 Blazor 比较陌生,在将复杂的数据结构(例如对象列表)有效绑定到我的 Blazor 组件方面面临着挑战。虽然基本数据绑定看起来很简单...

回答 1 投票 0

如何在 Vue 2.7 Composition API 中将 v-model 与自定义组件一起使用?

我正在使用 Vue 2.7 和 Composition API 构建自定义输入组件。到目前为止,我的组件已达到以下状态: <... 我正在使用 Vue 2.7 和 Composition API 构建自定义输入组件。到目前为止,我的组件已达到以下状态: <template> <div class="ui-field"> <label :for="id">{{ label }}{{ required ? '*' : '' }}</label> <input :aria-errormessage="errorDescriptionId()" :aria-invalid="!!error ? 'true' : 'false'" :autocomplete="autocomplete" class="ui-input" :data-acting="is_acting" :disabled="disabled" :id="id" :required="required" :type="type" :value="modelValue" @input="emitChange" /> <p :id="errorDescriptionId()" v-if="error">{{ error }}</p> </div> </template> <script lang="ts" setup> type UIInput = { autocomplete?: 'on' | 'off' | undefined disabled?: boolean | undefined error?: string | undefined id?: string | undefined is_acting?: boolean | undefined label?: string | undefined required?: boolean | undefined type?: 'text' | 'number' | undefined modelValue?: any } const props = defineProps<UIInput>() const emit = defineEmits(['update:modelValue']) function emitChange(event: Event): void { if (event?.target?.value) { emit('update:modelValue', event.target.value) } } function errorDescriptionId(): string | undefined { if (props.error === undefined) { return undefined } return `${!!props.id ? props.id : generateRandomId()}-error` } function generateRandomId(): string { const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' let random_string = '' for (let i = 0; i < 4; i++) { const index = Math.floor(Math.random() * letters.length) random_string += letters.charAt(index) } return random_string } </script> 如您所见,组件应该能够在父组件上接收 v-model,如下所示: <UIInput autocomplete="off" id="complement" label="Complemento" type="text" v-model="form.address.complement" /> form.address.complement是一个响应式对象,它的值应该传递到我的组件的输入元素,并随着我更改输入上的文本而更改。所有这些都是组件应该的行为方式,但实际上,在检查Vue DevTools时,我的UIInput有一个modelValue: undefined,即使form.address.complement已经以字符串值开头,并且还有一个$attrs: value: [value of form.address.complement]。就像双向绑定没有正确连接所有东西一样。 我不知道我做错了什么,所以如果有人可以提供帮助,我很感激。 我找到了解决这个问题的方法。唯一需要改变的是 emit,它需要发出一个名为“input”的事件 emit('input', 'event.target.value') 而且,在 type UIInput 中,我不需要 modelValue,正如 @Estus Flask 对我的问题的评论,但实际上,一个 value,它对我的 v 模型有价值。

回答 1 投票 0

OpenXML:通过绑定创建可重用的内容控件

我需要将特定的 XML 附加到 Word 文档,以便元素将显示在正确的位置。我可以使用 OpenXML SDK 来完成此操作。 问题是我也希望能够定义内容控件...

回答 2 投票 0

在我的 Blazor 服务器应用程序中,我想在标题中显示 razor.cs 页面的消息。但我无法将消息从剃刀页面传递到标题

我有一个 Blazor 服务器端应用程序 (.Net7),由侧边栏、标题和正文部分组成。在正文部分,可以通过侧边栏导航到多个剃刀页面。 在所有剃刀页面中...

回答 1 投票 0

WPF:多重绑定未使用 OnPropertyChanged 进行更新?

我有一个转换器,它接受一个 bool 值,并根据它的真假返回 A 或 B。转换器根据布尔值选择正确的值,但仅在开始时,如果我改变......

回答 1 投票 0

从 TabControl 中删除选项卡:错误 4 无法找到绑定源

我有一个带有特殊“+ tab”的 TabControl,其定义如下: 我有一个带有特殊“+ tab”的 TabControl,其定义如下: <TabControl x:Name="ProjectsTabControl"> <local:ProjectTabItem x:Name="AddProjectTabTabItem" Header="+" MouseUp="AddProjectButton_Click" PreviewMouseDown="AddProjectTabTabItem_PreviewMouseDown"/> </TabControl> “MouseDown”只是将鼠标事件参数标记为已处理(以防止选择选项卡)。 “Button_Click”添加了一个具有以下样式的新选项卡: <Window.Resources> <Style x:Key="CloseableTabItemStyle" TargetType="local:ProjectTabItem"> <Setter Property="HeaderTemplate"> <Setter.Value> <DataTemplate> <DockPanel> <TextBlock Text="{Binding}" Margin="0,0,5,0"/> <Button Content="X" Click="CloseButton_Click" Tag="{Binding RelativeSource={RelativeSource AncestorType={x:Type local:ProjectTabItem}}}"/> </DockPanel> </DataTemplate> </Setter.Value> </Setter> </Style> </Window.Resources> 这些是我使用的“实际”选项卡。每个此类选项卡的标题中都有一个“关闭按钮”。如您所见,关闭按钮的标签设置为 ProjectTabItem 祖先。 我的CloseButton逻辑如下: private async void CloseButton_Click(object sender, RoutedEventArgs e) { if (sender is Button closeButton && closeButton.Tag is ProjectTabItem tabItem) { ProjectsTabControl.Items.Remove(tabItem); if (ProjectsTabControl.SelectedIndex == ProjectsTabControl.Items.Count - 1) { ProjectsTabControl.SelectedIndex--; } } } 这里的想法是防止选择+选项卡(但是,即使我选择+选项卡,我很快就会描述的问题也会发生)。 当我关闭最后一个选项卡(即+选项卡之前的最后一个选项卡)时,我看到以下错误 System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.TabControl', AncestorLevel='1''. BindingExpression:Path=TabStripPlacement; DataItem=null; target element is 'ProjectTabItem' (Name=''); target property is 'NoTarget' (type 'Object') 只有在关闭选项卡时选择该选项卡时才会发生这种情况。 似乎如果我在关闭“最后一个”选项卡之前先打开一个新选项卡,则问题不会发生。 (但是,这对我没有帮助,因为我希望除了 + 选项卡之外根本没有任何选项卡。) 这是什么原因造成的?我该如何解决它? 编辑:我想我已经找到了解决方法here。在删除选项卡之前设置 tabItem.Template = null; 实际上可以解决问题。那么让我将问题改为:为什么会发生这种情况?这个“解决方案”实际上是一个解决方案还是它只是抑制了我的代码中的一些潜在的重要问题? 只要您使用代码隐藏,您就永远无法享受 WPF 的乐趣。你总是会陷入“解决方法-陷阱”。如果您遵循 MVVM 模式,事情会变得容易得多。 我刚刚在我的应用程序中创建了一个 TabControl ,它绑定到一个 Observable Collection 在此可观察集合中是 TabItemModel: public class TabItemModel : ViewModelBase { private string _header; private ObservableObject _content; public string Header { get { return _header; } set { _header = value; RaisePropertyChanged(nameof(Header)); } } public ObservableObject Content { get { return _content; } set { _content = value; RaisePropertyChanged(nameof(Content)); } } private readonly IMessenger _messenger; public RelayCommand CloseTabCommand { get; set; } public TabItemModel(IMessenger messenger) { _messenger = messenger; CloseTabCommand = new RelayCommand(CloseThisTab); } private void CloseThisTab() { _messenger.Send(this); } } 这里是 XAML - 此 TabControl 的一部分: <TabControl Grid.Column="1" Grid.ColumnSpan="2" Grid.Row="1" Grid.RowSpan="2" ItemsSource="{Binding TabItems.Models}" SelectedItem="{Binding ActiveTab, Mode=TwoWay}"> <TabControl.ItemTemplate> <DataTemplate> <Border BorderBrush="Black" BorderThickness="2" CornerRadius="5" Margin="10,0,0,0"> <Grid Width="auto"> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="9*"/> </Grid.ColumnDefinitions> <TextBlock Text="{Binding Header}" FontSize="12" FontWeight="DemiBold" HorizontalAlignment="Left" VerticalAlignment="Center" Margin="12,0" Width="auto"/> <Button Grid.Column="1" Foreground="White" Command="{Binding CloseTabCommand}" HorizontalAlignment="Right" Padding="5" VerticalContentAlignment="Center" Margin="5"> <Button.Content> <Image Source="/icon-delete.png" Height="12" Width="12"/> </Button.Content> </Button> </Grid> </Border> </DataTemplate> </TabControl.ItemTemplate> MainViewModel 中的声明: [ObservableProperty] TabItemViewModel tabItems; [ObservableProperty] TabItemModel activeTab; XAML 中的按钮会触发 TabItemModel 中的 Relay-Command,该命令会向 View-Model 发送消息以关闭选项卡。我只是从集合中删除了这个特定的模型: public void Handle(TabItemModel message) { if (TabItems.Models.Count > 0) { TabItems.Models.Remove(message); } } 对我来说效果很好。

回答 1 投票 0

.NET MAUI CollectionView 无法显示对象列表中的字符串值

我有一个模型类Person,它有一些字符串属性。在 UI 中,有一些 Entry 字段,当按下按钮时,它们会在 ViewModel 类中执行以下操作: 创建一个 Person 对象...

回答 1 投票 0

WPF DataGrid2D ItemsSource 内存泄漏

我有一个图形项和矩阵项。图形项目是画布,我在其中绘制椭圆和线条。在矩阵项 I 中包含矩阵。我使用了这个库 (xmlns:dg2d =“clr命名空间:DataGrid2DLibrary;

回答 1 投票 0

C# 有类似 Delphi 中的 TQuery 的东西吗?

我在 Delphi 中进行了很多开发,我被要求开发一个新的应用程序,但他们更喜欢我使用 C#。它就像一个小erp,有很多CRUD操作。在德尔福中,您可以看到...

回答 1 投票 0

如何在表达式绑定中使用三元运算符切换应用属性绑定?

看,我有一个表,其中使用 sap.m.Table 的突出显示属性突出显示重复条目。现在我正在尝试实现一个切换按钮,让用户决定是否想要

回答 1 投票 0

可疑缩进:这是缩进,但没有延续之前的表达式

Android studio 向我展示了这个问题,代码行下方有红线 “可疑的缩进:这是缩进的,但没有继续前面的表达式 (binding.cllInternetA...)(上一个

回答 4 投票 0

当文本框中的数字发生变化时,Oxyplot 图表不会刷新 (WPF)

我尝试使用 MVVM 模式制作一个简单的 WPF 应用程序。它有一个文本框、一个文本块和一个 Oxyplot 图视图。 ** 视图模型类** 公共类 ViewModel :INotifyPropertyChanged { 私人

回答 1 投票 0

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