在WPF Xaml中检索并保存动态添加的控件?

时间:2017-03-24 04:55:29

标签: c# wpf xaml

I have added the template based on this link

我有一个添加按钮 - 当我通过Command点击它时,我将它添加到一个集合中。

 <ItemsControl ItemsSource="{Binding Collection}">
                <ItemsControl.ItemTemplate>
                    <DataTemplate>
                        <Grid DataContext="{StaticResource VieWModel}">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto" />
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="15*"/>
                                <ColumnDefinition Width="40*"/>
                            </Grid.ColumnDefinitions>
                            <Label Content="GH" Grid.Row="0" Grid.Column="0" VerticalContentAlignment="Center"></Label>
                            <tk:RadComboBox Grid.Row="0" Grid.Column="0" Margin="10" IsFilteringEnabled="True" Width="150" DisplayMemberPath="D"  IsEditable="True" ItemsSource="{Binding GK}"  SelectedItem="{Binding SK, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
                                <i:Interaction.Triggers>
                                    <i:EventTrigger EventName="SelectionChanged">
                                        <i:InvokeCommandAction Command="{Binding SelectionChangedCommand}" CommandParameter="{Binding}"/>
                                    </i:EventTrigger>
                                </i:Interaction.Triggers>
                            </tk:RadComboBox>
                            <Label Content="HB" Grid.Row="0" Grid.Column="1" VerticalContentAlignment="Center"></Label>
                            <tk:RadComboBox  Grid.Row="0" Grid.Column="1" Margin="10" IsFilteringEnabled="True" Name="cb"  Width="350" IsEditable="True" DisplayMemberPath="D"  ItemsSource="{Binding VR}" SelectedItem="{Binding VR1,Mode=TwoWay}">
                            </tk:RadComboBox>
                        </Grid>
                    </DataTemplate>
                </ItemsControl.ItemTemplate>
            </ItemsControl>

ViewModel示例代码:

     // Property for selected Item in combox1
            Public ValBase  SK{get;set;}

        //Property off combobox1 binding
        Public ValBase GK{get;set;}

        // Property ofor selected Item in combox2
        Public ValBase VR1{get; set;}

        //Property ofr combobox2 binding
        Public ValBase VR{get;set;}

        Public void AddButton(object obj)
        {
          var item =new collectionbase();
          Collection.Add(item)
        }

每当我点击添加按钮时,都会添加此迭代。

MyRequirement

  1. 当我第一次点击添加按钮时,应添加模板
  2. 当我第二次单击添加按钮时,先前生成的控件必须包含值,只有控件应添加到集合中,然后才能创建新控件
  3. 我不知道如何保存在集合中动态创建的值
  4. 我已经没有了想法如何实现这一点,任何人都可以提供帮助。 MVVM模式

2 个答案:

答案 0 :(得分:0)

我猜你在MainViewModel和Command中有Collection来添加模型。

private Model _lastAdded;
public Model LastAdded
{
  get{return _lastAdded;}
  set{_lastAdded = value;}
}

private void AddCommand(object obj)
{
  if(_lastAdded != null && _lastAdded.SelectedValue != null)
  {
    var newItem = new Model();
    Collection.Add(newItem);
    _lastAdded = newItem;
   }
   else
   {
     //Show message
   }

}

答案 1 :(得分:0)

使用Selector Class.I使用CurrentInstance来绑定Collection现在正常工作