如何使用mvvm对网格进行绑定,以在其上呈现UI元素
本文关键字:元素 UI mvvm 何使用 网格 绑定 | 更新日期: 2023-09-27 18:20:25
我是一名c#Silverlight初学者,我正在使用带有MVVM方法的silverlight5。
我该怎么办?我已经创建了一个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呢?
编辑:情况是,我有一个网格,它已经包含一个组合框(使用c#代码动态获得),并且我想在网格上渲染该网格(该网格是创建xaml时获得的默认网格)(通过使用MVVM绑定,我必须渲染以前获得的网格(使用c#,containign组合框),方法是通过执行类似{Binding AlreadComboContainingGrig}
的东西)。
而我的ViewModel类将被绑定,看起来像这样:
public class uiElementRendererViewModel : GenericViewModel
{
private Grid alreadComboContainingGrig;
public Grid AlreadComboContainingGrig
{
get { return alreadComboContainingGrig; }
set { alreadComboContainingGrig= value; OnPropertyChanged("AlreadComboContainingGrig"); }
}
}
有可能吗?如果没有,你能告诉我其他选择吗?谢谢
最好的方法可能是在外部网格中使用容器元素,如ContentController或Frame作为占位符,并将其内容绑定到内部网格。XAML中的类似内容:
<Grid Name="GlobalGrid">
<ContentControl Name="ComboGridPlaceholder" Content = "{Binding alreadComboContainingGrig}"/>
</Grid>
剩下的就是不要忘记为ComboGridPlaceholder设置正确的DataContext。