<TextBlock x:Name="PageTitle" Text="{Binding tripTypeViewModel.test}"/>
这是我在ViewModel测试中绑定到属性的XAML。如何使绑定不指定ViewModel对象'tripTypeViewModel',因为我需要在运行时以编程方式更改数据上下文,所以它不会总是这样吗?
完整情景:
class CompositeViewModel
{
public static TripsResponseTypeViewModel tripsResponseTypeViewModel { get; set; }
public static TripTypeViewModel tripTypeViewModel { get; set; }
static CompositeViewModel()
{
tripsResponseTypeViewModel = new TripsResponseTypeViewModel();
tripTypeViewModel = new TripTypeViewModel();
}
}
在我的Page.xaml中,我设置了数据上下文:
public MyTripsPage()
{
this.InitializeComponent();
this.DataContext = new CompositeViewModel();
}
所以有时我想在tripTypeViewModel集合或其他人上更改ListBoxes的ItemsSource属性。这就是为什么我需要像CompositeViewModel这样的主类,但是如何防止XAML特定的绑定?
答案 0 :(得分:0)
您可以为所有可能的DataContext
创建一个公共界面,并将其绑定到您的PageTitle
public class CompositeViewModel
{
public ITest SelectedViewModel { get; set; }
// Init the VM's and change them at run time ...
}
public class TripsResponseTypeViewModel : ITest
{
public string test { get; set; }
}
public class TripTypeViewModel : ITest
{
public string test { get; set; }
}
public interface ITest
{
string test { get; set; }
}
在xaml
通过这种方式,您可以确保无论DataContext
PageTitle
使用什么,它都将始终具有test
属性,您可以使用XAML绑定该属性