有没有办法在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中获得我分配给它的路径,那就太好了,这样我就不必在两个地方维护一个名称。
1条答案
按热度按时间lokaqttq1#
我知道这个问题很久以前就被问过了,我遇到过类似的情况,我必须从代码中获取Entry字段绑定路径来构建我的验证控制逻辑。
下面的GetBindingPath()给出了它当前设置的控件的绑定路径。示例:
然后这给了我上面每个控件的'ValueTextProperty'绑定路径的路径,即“AccountsSignupModel.xxxxxPropertyxxx”
的