Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF MVVM用户控件的动态绑定,并根据所选设计显示记录_C#_Wpf_Xaml_Mvvm_Data Binding - Fatal编程技术网

C# WPF MVVM用户控件的动态绑定,并根据所选设计显示记录

C# WPF MVVM用户控件的动态绑定,并根据所选设计显示记录,c#,wpf,xaml,mvvm,data-binding,C#,Wpf,Xaml,Mvvm,Data Binding,我的项目需要帮助。无法获得我想要的任何适当解决方案。我在这里向你解释我的情况 我正在使用MVVM模式进行WPF项目,其中我有主窗口屏幕,在加载主窗口屏幕时,它应该是空白的,并且只有一个标签。点击该标签,我必须打开新的表单,即窗口小部件屏幕,窗口小部件屏幕上有多个带有图像的按钮(12个) 现在,单击任何按钮,我想要特定的按钮名称或参数,因此相应地,我必须从视图中找到用户控件,并在主窗口屏幕上呈现用户控件,其中包含20条记录。若我再次单击主窗口标签并从窗口小部件屏幕选择另一个按钮,那个么它应该加载另

我的项目需要帮助。无法获得我想要的任何适当解决方案。我在这里向你解释我的情况

我正在使用MVVM模式进行WPF项目,其中我有主窗口屏幕,在加载主窗口屏幕时,它应该是空白的,并且只有一个标签。点击该标签,我必须打开新的表单,即窗口小部件屏幕,窗口小部件屏幕上有多个带有图像的按钮(12个)

现在,单击任何按钮,我想要特定的按钮名称或参数,因此相应地,我必须从视图中找到用户控件,并在主窗口屏幕上呈现用户控件,其中包含20条记录。若我再次单击主窗口标签并从窗口小部件屏幕选择另一个按钮,那个么它应该加载另一个选定的用户控件,该控件将被绑定到主窗口屏幕

所以,简言之,根据小部件屏幕中选择的设计,所有记录都应该使用用户控件显示在主窗口中。 下面是我的小部件屏幕,我可以从中选择在主窗口屏幕中显示的集合设计。

这是我的主Windows屏幕代码,目前它正在将我提到的静态用户控件直接绑定到12个用户控件中,其中一个是UserControlColumn1XL,如何在整个场景中动态更改它

<Window x:Class="TechMedic.MainWindow"
    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"
    xmlns:uc ="clr-namespace:TechMedic.View.UserControls"
    xmlns:local="clr-namespace:TechMedic"
    xmlns:controls="clr-namespace:TechMedic.View.UserControls"
    xmlns:data="clr-namespace:TechMedic.Data"
    mc:Ignorable="d"
    WindowStartupLocation="CenterScreen" Background="Black"
    Title="Main Window}" WindowState="Maximized" MinWidth="750" >

<StackPanel>    
    <StackPanel Grid.Column="0" Background="Black" VerticalAlignment="Top" >
        <Border BorderThickness="1" Background="Black" BorderBrush="White">
            <Button Style="{StaticResource TransparentStyle}" Command="{Binding OnClickNormalCommand}" CommandParameter="Normal" Foreground="LightSkyBlue" HorizontalAlignment="Center" FontSize="12pt" >
                <TextBlock Text="{Binding NormalCollection.Count, StringFormat='Normal: {0}'}" Padding="0,5, 0, 5" Foreground="{Binding IsNormalColor}" />
            </Button>
            </Border>
            <Border Name="UserControl1BorderNormal" BorderBrush="White" BorderThickness="0" >
                <ItemsControl ItemsSource="{Binding NormalCollection}" Name="ListNormal" Margin="4,0" >
                    <ItemsControl.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapPanel HorizontalAlignment="Left" />
                        </ItemsPanelTemplate>
                    </ItemsControl.ItemsPanel>
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <controls:UserControlColumn1XL HorizontalAlignment="Left" Margin="2" />
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </Border>
        </StackPanel>
</StackPanel>


所以WidgetScreen是另一个窗口,您想在主窗口上显示从WingtScreen选择的项目?是的,在主窗口上,当从widget屏幕选择项目时,它有20条收集记录的列表。因此,所选项目应在MainWindows中动态显示20次。因此,您正在询问如何沟通这两个窗口的解决方案,不是吗?是的,并根据小部件屏幕中的选择动态绑定和更改MainWindows屏幕中的用户控件。您可以使用某种Messenger/EventAggregator进行沟通。