Xamarin.Forms 不更改 BindingContext 的视图到视图绑定
Xamarin.Forms View-to-View binding without changing BindingContext
我在 XAML 中定义了一个 Button
,它包含一个 Command
,包括一个 CommandParameter
。 Command
绑定到当前视图的 ViewModel,而 CommandParameter
绑定到当前视图中的另一个控件。在 WPF 中,这看起来像:
<TextBox x:Name="MyTextBox" />
<Button Command="{Binding ViewmodelCommand}"
CommandParameter="{Binding ElementName=MyTextBox, Path=Text}" />
根据 documentation,在 Xamarin.Forms 中,通过使用 x:Reference
标记扩展更改控件的 BindingContext
可以实现视图到视图绑定:
<Button BindingContext="{x:Reference Name=MyTextBox}"
CommandParameter="{Binding Path=Text}" />
但是,在这种情况下,我无法将 Command
绑定到全局 Viewmodel!这种情况有什么解决办法吗?
你解决了吗?
我所做的是添加绑定 MyTextBox <-> viewModel,例如:
MyTextBox.SetBinding(Entry.TextProperty, "PropName");
btn.SetBinding(Button.CommandProperty, "CommandName");
btn.SetBinding(Button.CommandParameterProperty, "PropName");
试试这个:
<Button Command="{Binding ViewmodelCommand}"
CommandParameter="{Binding Source={x:Reference MyTextBox}, Path=Text}" />
我在 XAML 中定义了一个 Button
,它包含一个 Command
,包括一个 CommandParameter
。 Command
绑定到当前视图的 ViewModel,而 CommandParameter
绑定到当前视图中的另一个控件。在 WPF 中,这看起来像:
<TextBox x:Name="MyTextBox" />
<Button Command="{Binding ViewmodelCommand}"
CommandParameter="{Binding ElementName=MyTextBox, Path=Text}" />
根据 documentation,在 Xamarin.Forms 中,通过使用 x:Reference
标记扩展更改控件的 BindingContext
可以实现视图到视图绑定:
<Button BindingContext="{x:Reference Name=MyTextBox}"
CommandParameter="{Binding Path=Text}" />
但是,在这种情况下,我无法将 Command
绑定到全局 Viewmodel!这种情况有什么解决办法吗?
你解决了吗?
我所做的是添加绑定 MyTextBox <-> viewModel,例如:
MyTextBox.SetBinding(Entry.TextProperty, "PropName");
btn.SetBinding(Button.CommandProperty, "CommandName"); btn.SetBinding(Button.CommandParameterProperty, "PropName");
试试这个:
<Button Command="{Binding ViewmodelCommand}"
CommandParameter="{Binding Source={x:Reference MyTextBox}, Path=Text}" />