Windows之间的OnPropertyChanged - WPF

时间:2016-01-16 23:24:36

标签: c# wpf xaml

毕竟,对不起,英语不是我的母语。 所以,我正在开发一个wpf应用程序,使用thow windows,一个存在与我的数据库中的记录一样多的按钮,另一个用一个小形式添加一个新的,但我有一个问题。当我向我的数据库添加另一条记录时OnPropertyChanged没有触发并且新按钮没有显示,我认为这是因为DataContext。

LugaresWindow.xaml

 <ItemsControl ItemsSource="{Binding LugaresBtns}" Margin="0,35,0,0">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <UniformGrid Columns="7" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Button Content="{Binding numero}" Click="openLugar" Tag="{Binding idLugar}" HorizontalAlignment="Left" Margin="10,10,0,0" VerticalAlignment="Top" Width="96" Height="30"/>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>

LugaresWindow.xaml.cs

private void addlugarbtn_Click(object sender, RoutedEventArgs e)
{
    //(DataContext as LugarViewService).addLugar("11","6969","A","","1"); **IF I USE IT LIKE THIS IT WORKS!**
    EditLugarWindow window = new EditLugarWindow(-1);
    window.Show(); 
}

EditLugarWindow.xaml.cs (确认添加新记录的表单)

        if (lvs.addLugar(idparquetxt.Text, numerotxt.Text, sectortxt.Text, matriculatxt.Text, selected))
        {
            this.Close();
        }

在我的 LugarViewService.cs

   public bool addLugar(string idParque, string numero, string sector, string matricula, string tipo)
    {
        int newnumero, newtipo, newparque;

        try
        {
            newparque = int.Parse(idParque);
            newnumero = int.Parse(numero);
            newtipo = int.Parse(tipo);
            pmclient.addLugar(newparque, newnumero, sector, matricula, newtipo, 1);               
            OnPropertyChanged("LugaresBtns");
            return true;
        }
        catch (Exception e)
        {
            MessageBox.Show("Erro ao adicionar. Por favor verifique o numero de lugar ou o tipo\n" + e.Message);
            return false;
        }
    }


public List<Lugar> LugaresBtns
{
    get
    {
        return pmclient.getLugaresByParque(idParque).ToList();

    }
}

因此,正如您所看到的,在使用另一个窗口插入新记录后,LugaresWindow.xaml不会更新。 我做错了什么?

谢谢大家!

1 个答案:

答案 0 :(得分:0)

它已经解决了,我只需要将window.DataContext设置为我正在使用的lvs实例。 谢谢大家回复。