我是一名c#Silverlight初学者,我使用的是Silverlight5和MVVM方法。
我该怎么办? 我创建了一个xaml,假设:
<UserControl x:Class="DEV_CENTER.TabControlStuff.UIeLementRender"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="400">
<Grid x:Name="LayoutRoot" Background="White">
</Grid>
</UserControl>
现在我想将此网格绑定到一个viewModel类,该类将在其上呈现包含组合框的网格。怎么做?
我尝试通过像这样更改网格来添加"{Binding UIElements}"
<Grid x:Name="LayoutRoot" Background="White" {Binding UIElements}>
当然不支持。
那么如何使用MVVm方法绑定此网格以在其上呈现UIElemnts(组合框)?
编辑:情况是我有一个网格已经包含一个Combobox(使用c#代码动态获得)和我希望在网格上渲染的网格(此网格是在创建时获得的默认网格xaml)(通过使用MVVM进行绑定,我必须通过像{Binding AlreadComboContainingGrig}
这样的方式使用MVVM将它绑定到这个xaml degault创建的网格来渲染先前获得的网格(使用c#,包含组合框)。
而我绑定的ViewModel类将如下所示:
public class uiElementRendererViewModel : GenericViewModel
{
private Grid alreadComboContainingGrig;
public Grid AlreadComboContainingGrig
{
get { return alreadComboContainingGrig; }
set { alreadComboContainingGrig= value; OnPropertyChanged("AlreadComboContainingGrig"); }
}
}
有可能吗?如果没有,那么请你告诉我任何替代方案吗?谢谢。
答案 0 :(得分:1)
可能最好的方法是在外部网格中使用容器元素,例如ContentController或Frame作为占位符,并将其内容绑定到内部网格。 在XAML中有类似的东西:
<Grid Name="GlobalGrid">
<ContentControl Name="ComboGridPlaceholder" Content = "{Binding alreadComboContainingGrig}"/>
</Grid>
唯一剩下的就是不要忘记为ComboGridPlaceholder设置正确的DataContext。