XAML 我可以在Xamarin表单中获取控件的绑定路径吗?

ckx4rj1h  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(126)

有没有办法在Xamarin Forms中检索控件的绑定路径?

public partial class TestPage : _BaseContentPage
{
    public TestPage()
    {
        InitializeComponent();
        Binding b = new Binding("Field1", BindingMode.OneWay, null, null, null, this.BindingContext);
        Entry t = FindByName("Field1") as Entry;
        t.SetBinding(Entry.TextProperty, b);

        // Now, how do I get the Binding path back?
        // Binding b2 = t.GetBinding();   // no such animal.
    }
}

字符串
在XAML中

<!-- Field1 - string -->
<Label Text="Field 1" Grid.Row="0" Grid.Column="0" VerticalTextAlignment="Center" />
<StackLayout Grid.Row="0" Grid.Column="1" Margin="0" Padding="0">
    <Entry x:Name="Field1" Text="{Binding Field1}" Grid.Row="0" Grid.Column="1" Keyboard="Default" />
    <Label Text="{Binding [Field1]}" TextColor="Red" FontSize="Small" IsVisible="{Binding [Field1], Converter={StaticResource stringToBool}}" />
</StackLayout>


我试图模仿angular提供的轻松绑定,但Xamarin和XAML似乎不具备处理跟踪控件是否被“触摸”或更改“脏”等事情的能力,因此我必须使用代码隐藏(我知道!)。我能想到的唯一方法是使用控件事件来跟踪这些状态,其中我获得控件本身,但没有绑定信息。硬着头皮给给予所有控件的名称,这些名称与它们绑定的属性相匹配,这样我就可以在ViewModel中跟踪它们的状态,但如果能够在XAML中获得我分配给它的路径,那就太好了,这样我就不必在两个地方维护一个名称。

lokaqttq

lokaqttq1#

我知道这个问题很久以前就被问过了,我遇到过类似的情况,我必须从代码中获取Entry字段绑定路径来构建我的验证控制逻辑。
下面的GetBindingPath()给出了它当前设置的控件的绑定路径。示例:

然后这给了我上面每个控件的'ValueTextProperty'绑定路径的路径,即“AccountsSignupModel.xxxxxPropertyxxx”


相关问题