这个标签在不同的环境中意味着不同的东西;考虑使用较少模糊的标签来代替或另外。常见含义包括:依赖项注入和数据绑定到对象和应用程序组件之间的绑定。
在 .NET Maui 中,我有这个 XAML: <Setter Property="TextColor" Value="Green"/>...</desc> <question vote="0"> <p>在 .NET Maui 中,我有这个 XAML:</p> <pre><code> <Style x:Key="GreenLabelStyle" TargetType="Label"> <Setter Property="TextColor" Value="Green"/> </Style> <Label Style="{StaticResource GreenLabelStyle}" Text="Some text" TextColor="{Binding SometimesOverrideColor}" /> <CheckBox IsChecked="{Binding OverrideColorStyle}"/> </code></pre> <p>Label 的 TextColor 绑定到此属性:</p> <pre><code> public Color SometimesOverrideColor { get { return OverrideColorStyle ? Colors.Pink : Colors.Green; // works, but not DRY } } </code></pre> <p>即使我有一个指定的(绑定)<pre><code>TextColor</code></pre>,我希望该选项说“忽略此属性设置并表现得好像标签上没有明确的 TextColor”。我尝试将 <pre><code>null</code></pre> 换成 <pre><code>SometimesOverrideColor</code></pre>,但这没有用。我想使用标签样式的值(即绿色)。</p> <p>显然,我可以在 <pre><code>Colors.Green</code></pre> 中返回 <pre><code>SometimesOverrideColor</code></pre>,但这会重复样式中指定的值。如果我改变了样式,我必须记住更新属性。</p> <p>我的想法就像 CSS 中的 <pre><code>inherit</code></pre> 关键字。如果我能回来<pre><code>Color.Inherit</code></pre>那就太好了!</p> </question> <answer tick="false" vote="0"> <p>根据我对你问题的理解,我会为此做一些事情</p> <pre><code> <Style TargetType="Label"> <Setter Property="TextColor" Value="Black" /> <Setter Property="FontFamily" Value="OpenSansRegular" /> <Setter Property="FontSize" Value="14" /> </Style> <Style x:Key="SometimesOverrideColor" TargetType="Label"> <Setter Property="TextColor" Value="Pink" /> </Style> <Style x:Key="GreenLabelStyle" TargetType="Label"> <Setter Property="TextColor" Value="Green" /> </Style> </code></pre> <p>然后编写一个简短的转换器,有条件地应用此:</p> <pre><code> //Name this sensibly public abstract class WhateverColorConveter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { if (value is not bool condition) { return null; // in case someone uses the converter but is a smartass } return Application.Current.Resources.GetResource<Style>(condition ? "SometimesOverrideColor" : "GreenLabelStyle"); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } </code></pre> <p>然后这将与您的 XAML 代码样式一起使用,不要忘记将其作为静态资源添加到您的资源中:</p> <pre><code> <ContentPage.Resources> <converters:WhateverColorConveter x:Key="WhateverColorConverter" /> </ContentPage.Resources> </code></pre> <p>然后使用这个:</p> <pre><code><Label Style={Binding Condition, Converter={StaticResource WhateverColorConverter}}/> </code></pre> </answer> </body></html>
将 DataGridView 绑定到字典数组<string,object>
我正在尝试将字典数组绑定到datagridview。 字典都将具有相同的键,并且值将始终是相同的值类型对象(具有不同的...
我想将 ValueTransformer 添加到可可绑定中。 我创建了一个 ValueTransformer 类,但它在 IB 中不可见。 当在 IB 中添加为 ValueTransformer 时,应用程序将在启动时崩溃 班级
使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable
我已经尝试了一切但一无所获,所以我希望有人能给我一个顿悟的时刻。 我根本无法获得成功提取数据网格中数据的绑定。 我有一个数据表,可以...
我创建了 TextBox 类的派生类 MyTextBox,并添加了一个名为 AString 的依赖属性和一个名为 ContextChangedEvent 的路由事件。在XAML代码中,Text属性被绑定...
我真的很难让文本框绑定到字符串变量,并且在互联网上尝试了各种解决方案,但没有成功。也许有人可以指出我做错了什么? 嗯...
使用 Python 的 Azure Functions - 未找到工作职能
我正在尝试创建一个应用程序(我们称之为“uploder”),它接受Azure存储队列消息,执行一些工作但没有输出。但是,我收到了这个通用错误
我正在尝试在 DataGrid 列中的其他数据旁边显示图像。 我的模型看起来像这样: 公开课人物 { 公共字符串名称{获取;放; } 公共字符串地址{获取;放; ...
我试图在工作表中呈现一个带有 @Binding String 变量的视图,该变量仅在 TextField 中显示/绑定该变量。 在我的主 ContentView 中,我有一个字符串数组,我用
首次呈现时,SwiftUI 显示带有绑定变量的工作表不起作用
我试图在工作表中呈现一个带有 @Binding String 变量的视图,该变量仅在 TextField 中显示/绑定该变量。 在我的主 ContentView 中,我有一个字符串数组,我用
我有一个视图模型,其中包含具有 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" 呜呜😅