Laden...

RelativesBinding in DataGrid

Erstellt von DavidT vor 13 Jahren Letzter Beitrag vor 13 Jahren 678 Views
DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren
RelativesBinding in DataGrid

Hallo,

ich habe ein Fenster und nutze die this als DataContext. Innerhalb des Fensters habe ich ein DataGrid, welches ich an eine Liste X binde. In dem Datagrid habe ich eine Combobox, welche nicht an Liste X sondern an den DataContext des Fensters gebunden werden soll. Mit google habe ich nun zig Beispiele gefunden bei denen es mit RelativeBindings gelöst ist, das habe ich auch probiert, aber es funktioniert nicht:

<Window x:Class="NewCourseRegistration"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Neue Anmeldung für einen Kurs" Height="450" Width="405">
    <DockPanel>
        <Grid DockPanel.Dock="Top" Height="58">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="168" />
                <ColumnDefinition Width="215*" />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="29" />
                <RowDefinition Height="29" />
            </Grid.RowDefinitions>
            <Label Content="Datum:" Grid.RowSpan="2" Height="28" HorizontalAlignment="Left" Margin="0" Name="label1" VerticalAlignment="Top" />
            <Label Content="Notfallnummer:" Grid.Row="1" Grid.RowSpan="2" Height="28" HorizontalAlignment="Left" Margin="0" Name="label2" VerticalAlignment="Top" />
            <DatePicker SelectedDate="{Binding SelectedDate}" Grid.Column="1" Grid.RowSpan="2" Height="25" HorizontalAlignment="Left" Margin="0" Name="datePicker1" VerticalAlignment="Top" Width="115" />
            <TextBox Text="{Binding PhoneNr}" Grid.Column="1" Grid.Row="1" Height="23" HorizontalAlignment="Left" Name="textBox1" VerticalAlignment="Top" Width="180" />
        </Grid>
        <StackPanel DockPanel.Dock="Bottom" Height="30">
        </StackPanel>
        <DataGrid ItemsSource="{Binding Entities, Mode=TwoWay}" DockPanel.Dock="Top" AutoGenerateColumns="False" CanUserAddRows="True">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
                <DataGridTextColumn Header="Alter" Binding="{Binding Age}"/>
                <DataGridComboBoxColumn Header="Kategorie" ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=DataContext.Types}"  SelectedItemBinding="{Binding Category}"/>
                <DataGridComboBoxColumn Header="Fähigkeit"/>
                <DataGridTextColumn Header="Tage" Binding="{Binding Days}"/>
            </DataGrid.Columns>
        </DataGrid>
    </DockPanel>
</Window>

Fehlermeldung ist:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Window', AncestorLevel='1''. BindingExpression:Path=DataContext.Types; DataItem=null; target element is 'DataGridComboBoxColumn' (HashCode=44946895); target property is 'ItemsSource' (type 'IEnumerable')

Wo mache ich den Fehler?

Gruß David

DavidT Themenstarter:in
998 Beiträge seit 2007
vor 13 Jahren

Also mit der DataGrudComboBoxColum funktioniert das ganze nicht, wenn ich daraus eine TemplateColum mache und der eine Combobox hinzufüge funktioniert das ganze super... Ka was das für ein Fehler ist!

Gruß David