binding 相关问题

这个标签在不同的环境中意味着不同的东西;考虑使用较少模糊的标签来代替或另外。常见含义包括:依赖项注入和数据绑定到对象和应用程序组件之间的绑定。

.NET Maui - 中性属性绑定的选项

在 .NET Maui 中,我有这个 XAML: <Setter Property="TextColor" Value="Green"/>...</desc> <question vote="0"> <p>在 .NET Maui 中,我有这个 XAML:</p> <pre><code> &lt;Style x:Key=&#34;GreenLabelStyle&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Green&#34;/&gt; &lt;/Style&gt; &lt;Label Style=&#34;{StaticResource GreenLabelStyle}&#34; Text=&#34;Some text&#34; TextColor=&#34;{Binding SometimesOverrideColor}&#34; /&gt; &lt;CheckBox IsChecked=&#34;{Binding OverrideColorStyle}&#34;/&gt; </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> &lt;Style TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Black&#34; /&gt; &lt;Setter Property=&#34;FontFamily&#34; Value=&#34;OpenSansRegular&#34; /&gt; &lt;Setter Property=&#34;FontSize&#34; Value=&#34;14&#34; /&gt; &lt;/Style&gt; &lt;Style x:Key=&#34;SometimesOverrideColor&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Pink&#34; /&gt; &lt;/Style&gt; &lt;Style x:Key=&#34;GreenLabelStyle&#34; TargetType=&#34;Label&#34;&gt; &lt;Setter Property=&#34;TextColor&#34; Value=&#34;Green&#34; /&gt; &lt;/Style&gt; </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&lt;Style&gt;(condition ? &#34;SometimesOverrideColor&#34; : &#34;GreenLabelStyle&#34;); } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { throw new NotImplementedException(); } } </code></pre> <p>然后这将与您的 XAML 代码样式一起使用,不要忘记将其作为静态资源添加到您的资源中:</p> <pre><code> &lt;ContentPage.Resources&gt; &lt;converters:WhateverColorConveter x:Key=&#34;WhateverColorConverter&#34; /&gt; &lt;/ContentPage.Resources&gt; </code></pre> <p>然后使用这个:</p> <pre><code>&lt;Label Style={Binding Condition, Converter={StaticResource WhateverColorConverter}}/&gt; </code></pre> </answer> </body></html>

回答 0 投票 0

将 DataGridView 绑定到字典数组<string,object>

我正在尝试将字典数组绑定到datagridview。 字典都将具有相同的键,并且值将始终是相同的值类型对象(具有不同的...

回答 1 投票 0

在 Swift 中添加 ValueTransformer

我想将 ValueTransformer 添加到可可绑定中。 我创建了一个 ValueTransformer 类,但它在 IB 中不可见。 当在 IB 中添加为 ValueTransformer 时,应用程序将在启动时崩溃 班级

回答 2 投票 0

使用 TemplateColumns 将 WPF DataGrid 绑定到 DataTable

我已经尝试了一切但一无所获,所以我希望有人能给我一个顿悟的时刻。 我根本无法获得成功提取数据网格中数据的绑定。 我有一个数据表,可以...

回答 3 投票 0

为什么绑定没有生效[重复]

我创建了 TextBox 类的派生类 MyTextBox,并添加了一个名为 AString 的依赖属性和一个名为 ContextChangedEvent 的路由事件。在XAML代码中,Text属性被绑定...

回答 1 投票 0

将文本框绑定到字符串变量

我真的很难让文本框绑定到字符串变量,并且在互联网上尝试了各种解决方案,但没有成功。也许有人可以指出我做错了什么? 嗯...

回答 1 投票 0

使用 Python 的 Azure Functions - 未找到工作职能

我正在尝试创建一个应用程序(我们称之为“uploder”),它接受Azure存储队列消息,执行一些工作但没有输出。但是,我收到了这个通用错误

回答 1 投票 0

在 DataGrid 列中显示图像

我正在尝试在 DataGrid 列中的其他数据旁边显示图像。 我的模型看起来像这样: 公开课人物 { 公共字符串名称{获取;放; } 公共字符串地址{获取;放; ...

回答 6 投票 0

首次呈现时,使用绑定变量呈现工作表不起作用

我试图在工作表中呈现一个带有 @Binding String 变量的视图,该变量仅在 TextField 中显示/绑定该变量。 在我的主 ContentView 中,我有一个字符串数组,我用

回答 5 投票 0

首次呈现时,SwiftUI 显示带有绑定变量的工作表不起作用

我试图在工作表中呈现一个带有 @Binding String 变量的视图,该变量仅在 TextField 中显示/绑定该变量。 在我的主 ContentView 中,我有一个字符串数组,我用

回答 5 投票 0

WPF 条件绑定(仅在...时绑定)

我有一个视图模型,其中包含具有 Checked 属性的项目列表。 在我的 WPF XAML 中,我创建了一个 ListBox,其项目的 DataTemplate 中的每个项目都有一个复选框。 此外,视图模型还有一个属性

回答 1 投票 0

当 TargetObject 绑定时,MarkupExtension 识别 FrameworkElement

我有一个有趣的 MarkupExtension 用例,它服务于 IValueConverter,它接受 int (计数器),并将其映射到 L10N 格式的本地化。我不确定如何最好地处理 sol...

回答 1 投票 0

ICustomTypeProvider 或 DynamicObject

我正在寻找绑定到一个类,该类根据下面的代码动态公开其属性。看来 ICustomTypeProvider 和 DynamicObject 都适用于此。谁能解释一下为什么我...

回答 1 投票 0

当绑定在标签上工作时,“集合视图”中的“选择器”不会预先选择 MAUI 中的任何值

我正在尝试在两个可观察的集合之间建立联系:里程碑、类别 在模型“Milestone”上,我有一个属性“SelectedCategory” 公共类别

回答 2 投票 0

SwiftUI #预览测试数据

#Preview 宏让我很沮丧!对我来说显而易见的测试数据无法构建。这是一个精简的示例:- 导入 SwiftUI 结构 TestView: 查看 { @国家私有变量

回答 1 投票 0

通用绑定扩展返回等效警告

下面的代码给了我一个警告: 相同类型的要求使得泛型参数“Tagger”和“Value”等效;这是 Swift 6 中的一个错误 虽然这仍然有效,但我宁愿摆脱......

回答 1 投票 0

捕获 WPF 运行时 BindingExpression 错误

我们都可以在 Visual Studio 输出窗口中看到运行时 BindingExpression 错误。但是我们可以在运行的应用程序本身中捕获这些事件吗?我听说 WPF 跟踪...这有什么作用吗...

回答 3 投票 0

为什么我无法像在 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);

回答 1 投票 0

对象在应该定义它的 OnInit 之后保持未定义状态

我有一个包含大量对象的父组件: 导出常量 myWalls: MyWall[] = [ { 标志:“棉花糖”, 照片1: '资产\墙壁.jpg', photo2: '资产\1.jpg', 照片...

回答 1 投票 0

文本已绑定到对象,但没有显示任何内容?

我在文本字段上有一个绑定,如下所示: 我在文本字段上有一个绑定,如下所示: <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" 呜呜😅

回答 1 投票 0

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