标签内包含多个标签的WPF是多个组框

时间:2017-08-16 03:34:10

标签: c# wpf mvvm tabs

我使用mvvm和存储库设计模式开发了一个wpf应用程序。通过绑定零代码,所有UI都可以完美地工作。

现在我必须使用标签将所有UI放在1个wpf UI上。在一些选项卡中,我放置了一些UI,这些UI是单独的UI,然后在由组框分隔的1个选项卡中。除组合框的单击事件外,所有绑定都按预期工作。我似乎无法获得正确的ViewModel来检测/设置组合框的SelectedItem属性。当执行到这行代码时: - SelectedScope = cboJobNo.SelectedItem作为Scope; SelectedItem为null。为什么呢?

此外,通过单击或选择1个组合框中的项目,如何将该选择发送到另一个ViewModel以显示其“'数据

提前谢谢

首先,我想要进行修正,来自外部组框的第一个ViewModel正在发送它的'数据到第二个ViewModel,它正确地位于第二个内部组框中,第二个ViewModel正在按预期处理数据。但输出不会显示在UI上。第二个ViewModel将显示其“#”的唯一方法。如果从内部组框中的组合框进行选择,则输出。我试图尽可能清楚地解释它 现在代码: - 第一个组框及其与第一个组合框的绑定: 我试图在这里复制并粘贴我的代码,但它的问题与其相关。缩进?

提前谢谢

以下是我的代码部分

                        <ComboBox 
                            Name="cboJobNo" 
                            Height="20"
                            Grid.Row="0"
                            Grid.Column="1"
                            IsEditable="{Binding booIsJobNoEditable}"
                            IsEnabled="{Binding booEnableDisableJobNo}"                    
                            ItemsSource="{Binding AllJobNos}"
                            SelectedItem="{Binding SelectedScope}"
                            SelectedIndex="{Binding intSetSelectedJobNoIndex}"
                            DisplayMemberPath="intJobNo" 
                            SelectedValuePath="intJobNo"
                            Text="{Binding SelectedScope.intJobNo}"
                            VerticalAlignment="Center"
                            Margin="7,7,100.8,6.6" 
                            >
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="DropDownClosed">
                                    <ei:CallMethodAction
                                        TargetObject="{Binding}"
                                        MethodName="ComboBoxSelection"
                                        />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="KeyDown">
                                    <ei:CallMethodAction
                                        TargetObject="{Binding}"
                                        MethodName="EnterTabKeyPressed"
                                        />
                                </i:EventTrigger>
                                <i:EventTrigger EventName="DropDownClosed">
                                    <ei:CallMethodAction
                                        TargetObject="{Binding ViewModel[5]}"
                                        MethodName="JobNoSelection"
                                        />
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                        </ComboBox>

    public void ComboBoxSelection(object sender, EventArgs e)
    {//Trap selections made on UI from comboboxes
        ComboBox cboBox = (ComboBox)sender;
        if (_booSearchForScopes == true)
        {
            _ScopeData.intTotalFound = 0; //reset total records found before new search
            if (cboBox.Text != null && cboBox.Text != "")
            {
                SearchFor(cboBox.Name, cboBox.Text);
                if (cboBox.Name == "cboJobNo" && FoundMultipleScopes.Count == 1)
                {//Not working yet
                    _POrders.SelectedScope = SelectedScope;
                    _POrders.JobNoSelection(sender, e);  //passing execution to the Purchase Orders ViewModel

                    FoundMultipleScopes = null;
                }
            }
        }
    }

    public void JobNoSelection(object sender, EventArgs e)
    {//Trap selections made on UI from  from Job Number combobox
        ComboBox cboBox = (ComboBox)sender;
        if (cboBox.Text != null && cboBox.Text != "")
        {
            if (_POrdersData.CheckAssignment(int.Parse(cboBox.Text)) > 0) //check if job number is already assigned
            {
                JobNoAssigned();
            }
            else
            {
                SearchForJobNo(cboBox, cboBox.Text);
            }
        }
        else
        {
            MessageBox.Show("Please select a Job Number from the list.", "Select Job Number", MessageBoxButton.OK,
                MessageBoxImage.Information);
        }
    }

0 个答案:

没有答案