如何使用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"); }
        }
    }

有可能吗?如果没有,你能告诉我其他选择吗?谢谢

如何使用mvvm对网格进行绑定,以在其上呈现UI元素

最好的方法可能是在外部网格中使用容器元素,如ContentController或Frame作为占位符,并将其内容绑定到内部网格。XAML中的类似内容:

<Grid Name="GlobalGrid">
   <ContentControl Name="ComboGridPlaceholder" Content = "{Binding alreadComboContainingGrig}"/>
</Grid>

剩下的就是不要忘记为ComboGridPlaceholder设置正确的DataContext。