- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法将值绑定(bind)到我创建的自定义 ContentView
。
我的 MainPage
使用 CustomFrameView
,它是一个 ContentView
。
我的 CustomFrameView
有一个字符串 BindableProperty
。这在我手动输入字符串时工作正常,但在我尝试使用 Binding 时失败。而且我确信绑定(bind)应该有效,因为它在 Label
上使用时有效。
有人知道为什么它不起作用吗?
MainPage.xaml
<StackLayout>
<!-- DOES work -->
<Label Text="{Binding Name}"/>
<!-- DOES work-->
<controls:CustomFrameView TestName="Test456"/>
<!-- DOES NOT work-->
<controls:CustomFrameView TestName="{Binding Name}"/>
</StackLayout>
MainPage.xaml.cs
public MainPage()
{
InitializeComponent();
BindingContext = new MainPageViewModel();
}
MainPageViewModel.cs
public partial class MainPageViewModel : ObservableObject
{
[ObservableProperty]
private string name;
public MainPageViewModel ()
{
Name = "Test123";
}
}
CustomFrameView.xaml.cs
public partial class CustomFrameView : ContentView
{
public string TestName
{
get => (string)GetValue(TestNameProperty);
set => SetValue(TestNameProperty, value);
}
public static readonly BindableProperty TestNameProperty =
BindableProperty.Create(
nameof(TestName),
typeof(string),
typeof(CustomFrameView),
"",
propertyChanged: SetTestNameProperty);
private static void SetTestNameProperty(BindableObject bindable, object oldValue, object newValue)
{
var vm = bindable.BindingContext as CustomFrameViewModel;
vm.TestName = (string) newValue;
}
public CustomFrameView()
{
InitializeComponent();
this.BindingContext = new CustomFrameViewModel();
}
}
CustomFrameViewModel.cs
public partial class CustomFrameViewModel : ObservableObject
{
[ObservableProperty]
private string testName;
}
最佳答案
其实很简单,它不起作用的原因是您为控件本身设置了不同的绑定(bind)上下文。它通常使用其父 View 的 BC。您的控件是您的 View ,它们没有单独的 ViewModel。您可以在此处重温您的 MVVM:https://learn.microsoft.com/en-us/dotnet/maui/xaml/fundamentals/mvvm
我建议您更改以下内容:
在您的自定义控件中,您可以执行以下操作:
public partial class CustomFrameView : ContentView
{
public string TestName
{
get => (string)GetValue(TestNameProperty);
set => SetValue(TestNameProperty, value);
}
public static readonly BindableProperty TestNameProperty =
BindableProperty.Create(
nameof(TestName),
typeof(string),
typeof(CustomFrameView),
string.Empty;
);
public CustomFrameView()
{
InitializeComponent();
}
}
转储您的自定义控制 VM,然后看看这是否适合您。
此外,如果您正在使用 Maui,如果您想了解如何正确使用它们,可以查看我的自定义控件:https://github.com/FreakyAli/MAUI.FreakyControls
祝你好运!
关于c# - 绑定(bind)不适用于自定义 BindableProperty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73691579/
在自定义 ContentView 上,我创建了一个 BindableProperty,如下所示 public static readonly BindableProperty StrokeColorP
我无法将值绑定(bind)到我创建的自定义 ContentView。 我的 MainPage 使用 CustomFrameView,它是一个 ContentView。 我的 CustomFrameVi
我想获得 BindableProperty 的值,因为我希望我的 BindableProperty 有两个状态,因为我可以区分 在我的自定义条目中: public static Binda
在 Xamarin.Forms 中,我实现了一个自定义Picker。ItemsSource 设置正确。但是,当我更改所选项目时,它不会更新我的 ViewModel 上的属性。 BindablePick
我正在通过 XAML 在我的 App.xaml 中添加资源。此资源是将分配给 CustomControl 的隐式样式。 CustomControl 包含一个标签。 为了设置此标签的 TextColor
我制作了一个非常简单的是/否 RadioBox 控件。 在其背后的代码中,我有以下 BindableProperty: public static readonly BindablePrope
我一直在研究 Ed Snider 的书 Mastering Xamarin.Forms。第 71 页指示创建一个类 DatePickerEmtryCell,它继承自 EntryCell。它显示添加以下
我制作了一个显示文本的自定义 View 。 在 TestView.xaml 中 和代码隐藏 在 TestView.xaml.cs 中
在 Xamarin Forms 中,我创建了一个包含自定义组件的页面,我想像这样提供一个值: 然而,这不起作用。当我使用原始数字而不是 Binding 时,它会起作用。我发现的问题是,我的自定义组件
我有 F# + Xamarin.Forms 工作,实际上没有使用 C#。它工作正常,但现在我正在尝试在我正在创建的控件上创建一个 BindableProperty。它有点工作,但是当我尝试在 XAML
背景信息 我正在 XAML 中开发 Xamarin Forms(v4.1.1.3,在 iOS 上测试)应用程序,使用 MVVM 和先查看方法;我正在使用 MVVMLight 的 ViewModelLo
在 Xamarin.Forms 的 xaml 中,我有一个自定义控件,我想添加 int 类型的属性。我想我必须使用 Bindable 属性,所以稍后我可以从 ViewModel 绑定(bind)一个属
在 WPF 开发方面有很多经验,我现在正在尝试创建我的第一个 Xamarin.Forms 应用程序。我认识到有一些等效于 WPF DependencyProperty 的称为 BindableProp
假设我有一个 View ,带有 其中的元素,根据它在 View 模型中是否具有非 null 属性而可见。像这样: 有了这个 ViewModel(只复制了相关部分): private string u
我一直在尝试弄清楚如何在 BindableProperty 更改时调用自定义渲染器 OnElementChanged。 在我的例子中,为了便于理解,我需要在 android、uwp、ios 渲染器中刷
我是一名优秀的程序员,十分优秀!