这个标签在不同的环境中意味着不同的东西;考虑使用较少模糊的标签来代替或另外。常见含义包括:依赖项注入和数据绑定到对象和应用程序组件之间的绑定。
我有一个视图模型,其中包含具有 Checked 属性的项目列表。 在我的 WPF XAML 中,我创建了一个 ListBox,其项目的 DataTemplate 中的每个项目都有一个复选框。 此外,视图模型还有一个属性
当 TargetObject 绑定时,MarkupExtension 识别 FrameworkElement
我有一个有趣的 MarkupExtension 用例,它服务于 IValueConverter,它接受 int (计数器),并将其映射到 L10N 格式的本地化。我不确定如何最好地处理 sol...
ICustomTypeProvider 或 DynamicObject
我正在寻找绑定到一个类,该类根据下面的代码动态公开其属性。看来 ICustomTypeProvider 和 DynamicObject 都适用于此。谁能解释一下为什么我...
当绑定在标签上工作时,“集合视图”中的“选择器”不会预先选择 MAUI 中的任何值
我正在尝试在两个可观察的集合之间建立联系:里程碑、类别 在模型“Milestone”上,我有一个属性“SelectedCategory” 公共类别
#Preview 宏让我很沮丧!对我来说显而易见的测试数据无法构建。这是一个精简的示例:- 导入 SwiftUI 结构 TestView: 查看 { @国家私有变量
下面的代码给了我一个警告: 相同类型的要求使得泛型参数“Tagger”和“Value”等效;这是 Swift 6 中的一个错误 虽然这仍然有效,但我宁愿摆脱......
捕获 WPF 运行时 BindingExpression 错误
我们都可以在 Visual Studio 输出窗口中看到运行时 BindingExpression 错误。但是我们可以在运行的应用程序本身中捕获这些事件吗?我听说 WPF 跟踪...这有什么作用吗...
为什么我无法像在 XAML 上那样在代码后面绑定 StringFormat?
这是我的工作示例,它正确绑定了 ViewModel 并正确触发了 StringFormat 和 ValidateMaskDecimal: 这是我的工作示例,它正确绑定了 ViewModel 并正确触发 StringFormat 和 ValidateMaskDecimal: <ListBox x:Name="Difetti" ItemsSource="{Binding Difetti}"> <ListBox.ItemTemplate> <DataTemplate> <StackPanel> <TextBox x:Name="Metro" controls:TextBoxHelper.Watermark="Metro" PreviewTextInput="ValidateMaskDecimal"> <TextBox.Text> <Binding Path="Metro" StringFormat="{}{0:0.0##########}"> </Binding> </TextBox.Text> </TextBox> </StackPanel> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 现在,如果我尝试在后面的代码中执行类似的操作(删除 ListBox,并将唯一的 TextBox 绑定到某个特定 index = 0 处的数据模型): <TextBox x:Name="Metro" controls:TextBoxHelper.Watermark="Metro" PreviewTextInput="ValidateMaskDecimal" /> var data = DataContext as ViewModelData; if (data != null && data.Difetti.Count > 0) { int difettoIndex = 0; Metro.SetBinding(TextBox.TextProperty, new Binding { Source = data, Path = new PropertyPath($"Difetti[{difettoIndex}].Metro"), StringFormat = "{}{0:0.0##########}" }); } 它会抛出 ValueStringBuilder 的 ThrowFormatError 异常: System.FormatException: '输入字符串的格式不正确。'. 我不明白为什么。 我哪里错了?代码不应该给我同样的结果吗? DataModel 上的 Metro 以这种方式配置(可空 decimal): private decimal? metro; public decimal? Metro { get { return metro; } set { SetField(ref metro, value, "Metro"); } } 字符串格式前缀的 {} 特定于 XAML。您在代码中不需要它。 当然,您可以检查在XAML中创建的字符串格式文本。 BindingExpression expression = BindingOperations.GetBindingExpression(Metro, TextBox.TextProperty); string format = expression.ParentBinding.StringFormat; Debug.WriteLine(format);
我有一个包含大量对象的父组件: 导出常量 myWalls: MyWall[] = [ { 标志:“棉花糖”, 照片1: '资产\墙壁.jpg', photo2: '资产\1.jpg', 照片...
我在文本字段上有一个绑定,如下所示: 我在文本字段上有一个绑定,如下所示: <Label Grid.Row="1" Grid.Column="1" FontFamily="FontCamptonMedium" FontSize="12" Text="{Binding CurrentBooking.FullName}" TextColor="Black" /> 在此页面的代码隐藏中,我们使用依赖注入来绑定到相应的视图模型,如下所示: public AppointmentPendingResponse(BookingViewModel viewModel): base(viewModel) { InitializeComponent(); BindingContext = viewModel; } 我们绑定的这个视图模型继承自另一个基本视图模型,就像这样...... public partial class BookingViewModel : BaseViewModel ...依次声明如下: public abstract partial class BaseViewModel : ObservableObject, IQueryAttributable, INotifyPropertyChanged 在基础视图模型中,我们实现以下内容以利用 inotifypropertychanged: public event PropertyChangedEventHandler PropertyChanged; protected bool SetProperty<T>(ref T backingStore, T value, [CallerMemberName] string propertyName = "", Action onChanged = null) { if (EqualityComparer<T>.Default.Equals(backingStore, value)) return false; backingStore = value; onChanged?.Invoke(); OnPropertyChanged(propertyName); return true; } protected void OnPropertyChanged([CallerMemberName] string propertyName = "") { var changed = PropertyChanged; if (changed == null) return; changed.Invoke(this, new PropertyChangedEventArgs(propertyName)); } 在 bookingviewmodel 中,我们然后像这样填充 CurrentBooking 属性: CurrentBooking = (BookingModel)selected; 生成的 json 如下所示: {\"FullName\":\"LAWMAN\",\"IdentityNo\":\"123\",\"Relation\":\"SELF\"} 我能够获取 json 数据意味着 CurrentBooking 不应该为空。那么为什么我的标签文本没有被填充?我不确定我在这里缺少什么。 编辑:好的,我更改了 bookingmodel(CurrentBooking 的对象类型)来实现 ObservableObject: public partial class BookingModel: ObservableObject { [ObservableProperty] private string _FullName; 并且全名仍然不显示。 Edit2:@klaus-gütter 是的,这是一张图片: 好吧,我找到了答案。这实际上太愚蠢了。包含边框的高度太短,以至于它实际上切断了我试图显示的所有文本。 添加了以下内容,现在一切都很好: HeightRequest="500" 呜呜😅
我正在尝试通过从 viewmodel.cs 启动来动态更新我的 xaml 程序上的绑定 由于某种原因,我无法在我的 CS 中的 label.content 上显示绑定: 每次我跑步的时候,eit...
在 WPF 中,如何基于 DataGrid 单元格的列索引创建数据触发器?我可以访问该列,但该列只有 DisplayIndex 可用,而不是真正的索引。我需要设计风格...
我在 Maui Android 的弹出窗口中有一个按钮,它具有到 IsEnabled 属性的绑定。我创建了一个转换器,以便在 IsSignButtonEnabled 属性为 1 或 0 时更改文本颜色。 ...
关于在 SwiftUI 列表中使用 ForEach 进行绑定的困惑
问题描述 我正在开发 SwiftUI 应用程序,并遇到了一个与列表中的 ForEach 循环中的绑定相关的有趣问题。我的困惑在于绑定传递给
我在 laravel 11 中遇到路由模型绑定问题。无论我尝试什么,响应始终保持为空。 我有什么 我有一个看起来像这样的数据库表: * ---------------...
WPF 绑定到 DataTemplate 中的 ElementName 有效,但在 Style Setter 中无效
谁能告诉我为什么这段代码: ...
早上好 我在将我的字段(所有 XamComboBoxEditors)绑定到 XamDataGrid 时面临着一个非常大的问题 在我的数据库中有 2 个表: 帐户 公共 int AccountId { 获取;放; } p...
为什么我的自动完成文本框事件 TextChanged 在 VB.NET 中运行得这么慢
我正在尝试使用文本框事件 TextChanged 自动完成,但使用 VB.NET 运行速度很慢。 虽然只有6条记录,我的代码有问题吗,请指导我。 我附上了一份gi...
我想将字符串绑定格式化为 Amount is X,其中 X 是绑定到标签的属性。 我见过很多例子,但以下不起作用: 我想将字符串绑定格式设置为 Amount is X,其中 X 是绑定到标签的属性。 我见过很多例子,但以下不起作用: <Label Content="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" /> 我也尝试过这些组合: StringFormat=Amount is {0} StringFormat='Amount is {}{0}' StringFormat='Amount is \{0\}' 我什至尝试将绑定属性的数据类型更改为 int、string和 double。似乎什么都不起作用。这是一个非常常见的用例,但似乎不受支持。 这不起作用的原因是 Label.Content 属性的类型为 Object,并且 Binding.StringFormat 仅在绑定到 String 类型的属性时使用。 发生的事情是: Binding 正在对您的 MaxLevelOfInvestment 值进行装箱并将其存储为 Label.Content 属性作为装箱的十进制值。 标签控件有一个包含 ContentPresenter 的模板。 由于未设置 ContentTemplate,因此 ContentPresenter 会查找为 DataTemplate 类型定义的 Decimal。当它找不到时,它会使用默认模板。 ContentPresenter 使用的默认模板通过使用标签的 ContentStringFormat 属性来呈现字符串。 有两种可能的解决方案: 使用 Label.ContentStringFormat 而不是 Binding.StringFormat,或者 使用 String 属性(例如 TextBlock.Text)而不是 Label.Content 这里是如何使用Label.ContentStringFormat: <Label Content="{Binding Path=MaxLevelofInvestment}" ContentStringFormat="Amount is {0}" /> 以下是如何使用 TextBlock: <TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is {0}'}" /> 注意:为了简单起见,我在上面的解释中省略了一个细节:ContentPresenter实际上使用了自己的Template和StringFormat属性,但在加载过程中,它们会自动模板绑定到ContentTemplate和ContentStringFormat属性Label,所以看起来 ContentPresenter 实际上正在使用 Label 的属性。 制作一个通用的StringFormatConverter : IValueConverter。将格式字符串传递为 ConverterParameter. Label Content="{Binding Amount, Converter={...myConverter}, ConverterParameter='Amount is {0}'" 此外,当格式字符串中需要多个对象时,请使用 StringFormatMultiConverter : IMultiValueConverter,例如 Completed {0} tasks out of {1}。 我刚刚检查过,由于某种原因它不适用于 Label,可能是因为它在内部使用 ContentPresenter 来表示 Content 属性。您可以使用 TextBlock 来代替,这样就可以了。如果您需要继承样式、行为等,您也可以将下面的 TextBlock 摘录放在 Label 的内容中。 <TextBlock Text="{Binding Path=MaxLevelofInvestment, StringFormat='Amount is \{0\}'} /> 尝试使用转换器...... <myconverters:MyConverter x:Key="MyConverter"/> <Label Content="{Binding Path=MaxLevelofInvestment, Converter={StaticResource MyConverter"} /> public class MyConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return String.Format("Amount is {0}", value); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value; } }
有没有一种方法可以通过“数据切换”将多个事件分配给引导程序控件? 例如,假设我想要一个具有“工具提示”和“按钮”切换的按钮