Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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#_Wpf_Database_Entity Framework_Combobox - Fatal编程技术网

C# 将外键约束数据绑定到窗体

C# 将外键约束数据绑定到窗体,c#,wpf,database,entity-framework,combobox,C#,Wpf,Database,Entity Framework,Combobox,在我的控件中,我设置items控件的datacontext,该控件生成如下控件。这是数据模板。。。 基本上,正如您所看到的,我将en-EF实体的单个值绑定到控件 <Grid Name="grdRoles" Background="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" > <Grid.RowDefinitions>

在我的控件中,我设置items控件的datacontext,该控件生成如下控件。这是数据模板。。。 基本上,正如您所看到的,我将en-EF实体的单个值绑定到控件

<Grid Name="grdRoles" Background="Gray" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" >
                <Grid.RowDefinitions>
                    <RowDefinition Height="80" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="Auto" />
                    <RowDefinition Height="*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="Auto" />
                    <ColumnDefinition Width="1.4*"/>
                    <ColumnDefinition />
                </Grid.ColumnDefinitions>
                <!--Subject-->

                <Label Content="Podmodul" Grid.ColumnSpan="2" Height="28" HorizontalAlignment="Center" Name="label0" VerticalAlignment="Center" />

                <Label Content="ID:" Grid.Row="1" Height="28" Name="label1" VerticalAlignment="Top" />
                <Label Content="Ime:" Grid.Row="2" Height="28" Name="label2" VerticalAlignment="Top" />
                <Label Content="Opis:" Grid.Row="3" Height="28" Name="label3" VerticalAlignment="Top" />
                <!--Expander-->
                <Label Content="Modul:" Grid.Row="5" Height="28" Name="label5" VerticalAlignment="Top" />
                <Label Content="Dopuštenja:" Grid.Row="6" Height="28" Name="label10" VerticalAlignment="Top" />
                <Label Content="Stanje:" Grid.Row="7" Height="28" Name="label11" VerticalAlignment="Top" />

                <TextBox    Grid.Column="1" Grid.Row="1" Height="23" Text="{Binding Path=ID, Mode=OneWay}" IsEnabled="False" />
                <TextBox    Grid.Column="1" Grid.Row="2" Height="23" Text="{Binding Path=Text, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                <TextBox    Grid.Column="1" Grid.Row="3" Height="23" Text="{Binding Path=Description, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />

                <Expander Grid.Column="0" Grid.Row="4" Grid.ColumnSpan="2" HorizontalAlignment="Stretch" Margin="50, 5, 5, 5" Background="DarkGray">
                    <Expander.Header>
                        <Label Content="Definicija:" Grid.Row="6" Height="28" Name="label9" VerticalAlignment="Top" />
                    </Expander.Header>
                    <Expander.Content>
                        <Grid>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                                <RowDefinition Height="Auto"/>
                            </Grid.RowDefinitions>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition Width="1.4*"/>
                            </Grid.ColumnDefinitions>

                            <Label Content="ClassName:" Grid.Row="0" Height="28" Name="label6" VerticalAlignment="Top" />
                            <Label Content="AssemblyName:" Grid.Row="1" Height="28" Name="label7" VerticalAlignment="Top" />
                            <Label Content="NameSpace:" Grid.Row="2" Height="28" Name="label8" VerticalAlignment="Top" />
                            <Label Content="Primaran:" Grid.Row="3" Height="28" Name="label4" VerticalAlignment="Top" />

                            <TextBox  Grid.Column="1" Grid.Row="0" Height="23" Text="{Binding Path=ClassName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                            <TextBox  Grid.Column="1" Grid.Row="1" Height="23" Text="{Binding Path=AssemblyName, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                            <TextBox  Grid.Column="1" Grid.Row="2" Height="23" Text="{Binding Path=NameSpace, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                            <CheckBox Grid.Column="1" Grid.Row="3" Height="16" IsChecked="{Binding Path=IsPrimary, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                        </Grid>
                    </Expander.Content>
                </Expander>

                <ComboBox   Grid.Column="1" Grid.Row="5" Height="25"  />
                <WrapPanel  Grid.Column="1" Grid.Row="6" Height="25"  />
                <CheckBox   Grid.Column="1" Grid.Row="7" Height="16" IsChecked="{Binding Path=active, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
            </Grid>
        </DataTemplate>

我的问题如下……

我还有(在网格的末尾)这个组合框。我想把它绑定到另一个EF数据集(DB表)。当我选择一个值时,键应该自动设置为数据绑定的对象。你明白我的意思了


我知道有数百种方法。触发器、依赖对象、代码隐藏。。。推荐什么。

您好。您可以在控件的
ResourceDictionary
中使用
ObjectDataProvider
。然后,在
组合框中
可以获得您想要外键ID的SelectedValuePath。看看这个例子如果这是您想要的,希望这有帮助!)我总是想知道,为什么WPF问题包含这些巨大的标记,而不是最小的样本,重现问题?你真的相信,有人愿意深入研究你的xml吗?它不知怎么地(你不说这个)充满了数据?我彻底地挖掘了你。从Expirence,我可以说,如果减少标记或简化,您要么会得到不解决问题,但解决了问题的蹩脚建议,要么。。。。你会发现有人会要求你粘贴整个东西。