Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 尝试插入时,选定项为空_C#_Sql_Wpf_Xaml - Fatal编程技术网

C# 尝试插入时,选定项为空

C# 尝试插入时,选定项为空,c#,sql,wpf,xaml,C#,Sql,Wpf,Xaml,我试图从我的xaml窗口插入新数据,我用SelectedBier绑定数据并用InsertCommand将其传递给我的ViewModel,然后填充selectedBieren。但它不起作用,当我调试时,程序会立即填充selectedBieren,其中没有任何文本(因为我没有填充任何内容) 这是我的密码: class InventarisViewModel : BaseViewModel { private ObservableCollection<Bier> bier;

我试图从我的xaml窗口插入新数据,我用SelectedBier绑定数据并用InsertCommand将其传递给我的ViewModel,然后填充selectedBieren。但它不起作用,当我调试时,程序会立即填充selectedBieren,其中没有任何文本(因为我没有填充任何内容)

这是我的密码:

class InventarisViewModel : BaseViewModel
{

    private ObservableCollection<Bier> bier;
    public ObservableCollection<Bier> Bier
    {
        get
        {
            return bier;
        }
        set
        {
            bier = value;
        }
    }

    public InventarisViewModel()
    {
        ReadBieren();
        Messenger.Default.Register<Bier>(this, OnBierReceived);
        KoppelenCommands();

    }
    private void KoppelenCommands()
    {
        InsertCommand = new BaseCommand(InsertBier);
    }
    BierDataService bierDS = new BierDataService();


    public void ReadBieren()
    {
        Bier = new ObservableCollection<Bier>(bierDS.GetBier());
    }

    private void OnBierReceived(Bier bier)
    {
        SelectedBier = bier;
    }

    private Bier selectedBier;
    public Bier SelectedBier
    {
        get
        {
            return selectedBier;
        }
        set
        {
            selectedBier = value;
            NotifyPropertyChanged();
        }
    }
    public ICommand InsertCommand { get; set; }
    private void InsertBier()
    {
        //BierDataService ds = new BierDataService();
        //ds.UpdateBier(SelectedBier);
        //Messenger.Default.Send<UpdateFinishedMessage>(new UpdateFinishedMessage("Completed"));
        if(selectedBier!=null)
        { 
        Bier bier = new Bier
        {
            brouwerijId = selectedBier.brouwerijId,
            soortId = selectedBier.soortId,
            alcoholpercentage = selectedBier.alcoholpercentage,
            naam = selectedBier.naam,
            aantal = selectedBier.aantal
        };


        bierDS.InsertBier(bier);
        ReadBieren();
        }
    }



}
类InventarisViewModel:BaseViewModel
{
私人收藏箱;
公共收集箱
{
得到
{
回炉;
}
设置
{
比尔=价值;
}
}
公共InventarisViewModel()
{
ReadBieren();
Messenger.Default.Register(此,OnBierReceived);
KoppelenCommands();
}
私有void KoppelenCommands()
{
InsertCommand=newbaseCommand(InsertBier);
}
BierDataService bierDS=新的BierDataService();
公共无效ReadBieren()
{
Bier=新的observeCollection(bierDS.GetBier());
}
收到的私人无效(Bier Bier)
{
SelectedBier=bier;
}
私人棺材选择棺材;
公共棺材精选棺材
{
得到
{
返回所选的BIER;
}
设置
{
selectedBier=值;
NotifyPropertyChanged();
}
}
公共ICommand InsertCommand{get;set;}
私有void InsertBier()
{
//BierDataService ds=新的BierDataService();
//ds.UpdateBier(SelectedBier);
//senger.Default.Send(新的UpdateFinishedMessage(“已完成”);
if(selectedBier!=null)
{ 
Bier Bier=新Bier
{
brouwerijId=selectedBier.brouwerijId,
soortId=selectedBier.soortId,
酒精百分比=所选的啤酒。酒精百分比,
naam=选定的BIER.naam,
aantal=selectedBier.aantal
};
bierDS.InsertBier(bier);
ReadBieren();
}
}
}
以下是我的XAML代码:

<Window x:Class="WPFinventaris.View.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:local="clr-namespace:WPFinventaris.View"
    DataContext="{Binding Source={StaticResource ViewModelLocator}, Path=InventarisViewModel}"
    mc:Ignorable="d"
    Title="Inventaris" Height="493.621" Width="603.834">

<StackPanel Margin="0,0,0,-21" >

    <ComboBox Name="comboReeks" ItemsSource="{Binding Bier}"  SelectedItem="{Binding SelectedSoort}"  Margin="10">
    </ComboBox>
    <DataGrid   Name="dataGridAlbums"  Margin="10" Background="White" ItemsSource="{Binding Bier}"  SelectedItem="{Binding SelectedAlbum}" AutoGenerateColumns="False"  AlternatingRowBackground="Gainsboro"  AlternationCount="2" >
        <DataGrid.Columns>
            <DataGridTextColumn Header="id" Binding="{Binding id}" Width="60" />
            <DataGridTextColumn Header="Naam" Binding="{Binding naam}"  Width="100"/>
            <DataGridTextColumn Header="Alcoholpercentage" Binding="{Binding alcoholpercentage,StringFormat={}{0}%}" Width="auto"/>
            <DataGridTextColumn Header="Aantal" Binding="{Binding aantal}"  Width="*"/>
        </DataGrid.Columns>
    </DataGrid>
    <Grid Margin="10" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="30" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto" />
            <ColumnDefinition Width="50" />
            <ColumnDefinition Width="Auto" MinWidth="35" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Label Grid.Row="0" Grid.Column="0" Content="Nummer:"/>
        <Label Grid.Row="0" Grid.Column="2" Content="Titel:" HorizontalAlignment="Right" Width="35"/>
        <TextBox Grid.Column="1" Grid.Row="0" Margin="3" Text="{Binding SelectedAlbum.Nummer, Mode=TwoWay}"   />
        <TextBox Grid.Column="3" Grid.Row="0" Margin="3" Text="{Binding SelectedAlbum.Titel, Mode=TwoWay}"/>
        <Button Grid.Column="3" Grid.Row="1" HorizontalAlignment="Center" 
        MinWidth="80" Margin="112,3" Content="Verwijderen" Command="{Binding DeleteAlbumCommand}" Width="80"  />
        <!--<Button Grid.Column="3" Grid.Row="2" HorizontalAlignment="Right" 
        MinWidth="80" Margin="3" Content="Toevoegen"  Click="Button_Click"  />-->
    </Grid>

    <Grid Grid.Column="1" Margin="20" Height="192" >
        <Grid.RowDefinitions>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="30" ></RowDefinition>
            <RowDefinition Height="auto"></RowDefinition>
            <RowDefinition Height="30"></RowDefinition>
            <RowDefinition Height="auto" MinHeight="23"></RowDefinition>
            <RowDefinition Height="21"></RowDefinition>
            <RowDefinition Height="auto" MinHeight="58"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="150"></ColumnDefinition>
            <ColumnDefinition Width="*"></ColumnDefinition>
        </Grid.ColumnDefinitions>


        <TextBlock Grid.Row="1" Text="Naam:" FontWeight="Bold" />
        <TextBlock Grid.Row="2" Text="SoortId:" FontWeight="Bold" />
        <TextBlock Grid.Row="3" Text="BrouwerijId:" FontWeight="Bold" />
        <TextBlock Grid.Row="4" Text="Alcohol %:" FontWeight="Bold" />
        <TextBlock Grid.Row="5" Text="Aantal:" FontWeight="Bold" />
        <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding SelectedBier.Naam}" Margin="0,0,0,10"/>
        <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding SelectedBier.SoortId}" Margin="0,0,0,10"/>
        <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding SelectedBier.BrouwerijId}" Margin="0,0,0,10" />
        <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding SelectedBier.Alcoholpercentage}" Margin="0,0,0,10" />
        <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding SelectedBier.Aantal}" />

        <Button Grid.Row="6" Content="Bewaren" Command="{Binding InsertCommand}" Margin="10,10,10,0" Height="26" VerticalAlignment="Top"/>

    </Grid>
    <Label Content="Label"/>
</StackPanel>


请发布相关的XAML标记。目前还不清楚你的问题是什么。你认为你的问题是什么?您的绑定是否无效?更改
SelectedBier
是否会通知
SelectedBieren
?如果是这样,不要这样做,从setter调用函数
InsertBier
,让
SelectedBieren
在实际值更新时更新(由函数更新)。抱歉,现在添加了它。问题是公共Bier SelectedBier在开始时运行。只有当我按下InsertCommand按钮时,它才能启动