| 

.NET C# Java Javascript Exception

4
Hallo

Ich habe hier ein DataGridTemplateColumn mit einer ComboBox drin. Die Daten werden korrekt angezeigt, also gebunden. Aber, wenn ich einen Wert in der ComboBox selektiere passiert nichts in der Source. Somit bleibt das Property vom gebundenen Objekt, wenn man im Grid eine neues erstellt, immer null.

<DataGridTemplateColumn Header="{loc:Translate Mangel.Projekt.Projekt.AbnahmeDatum.Grid.Wohung|Wohnung}">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.Wohnungen}"
SelectedItem="{Binding Wohnung, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Bezeichnung"
BorderBrush="{x:Null}"
Background="#00FFFFFF"
Padding="5,0,1,0"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Wie gesagt. Referenzdaten werden im Combo angezeigt. Der selektierte Wert wird auch richtig vorselektiert. ABER: Sobald ich ein neues Objekt selektiere in der Combo passiert nichts in zugrundeliegenden Property. Der Setter wird nie aufgerufen. Das sieht so aus.
[Required]
public Wohnung Wohnung
{
get
{
return this.m_Wohnung;
}
set
{
this.m_Wohnung = value;
OnPropertyChanged(() => this.Wohnung);
}
}


Anfängerfehler? :-)
News:
27.05.2014
GENiALi 2,5k 1 2 8
2 Antworten
1
Hallo,
ich glaube du musst auch noch den SelectedValuePath und SelectedValue setzen.

<ComboBox 
ItemsSource="{Binding DataContext.Workspace.Countries, RelativeSource={RelativeSource AncestorType={x:Type Window}, Mode=FindAncestor}}"
DisplayMemberPath="land"
SelectedValue="{Binding CountryCode}"
SelectedValuePath="land"/>
27.05.2014
mrmee 745 1 8
So funktionierts. Aber NUR Wenn das SelectedItem auch noch gebunden ist.

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.Wohnungen}"
SelectedItem="{Binding Wohnung, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedValue="{Binding Wohnung, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedValuePath="Wohnung"
DisplayMemberPath="Bezeichnung"
BorderBrush="{x:Null}"
Background="#00FFFFFF"
Padding="5,0,1,0" />
GENiALi 02.06.2014
War einwenig voreilig. So wie oben wird einwenig zu viel ausgeführt und die Objekte werden nicht mehr korrekt selektiert. Diese Version hier habe ich nun eingecheckt. :-)

<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=UserControl}, Path=DataContext.Abnahmearten}"
SelectedItem="{Binding Abnahmeart, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectedValue="{Binding Abnahmeart}"
DisplayMemberPath="Bezeichnung"
BorderBrush="{x:Null}"
Background="#00FFFFFF"
Padding="5,0,1,0"/>
GENiALi 02.06.2014
2
Ist nicht defaultmässig immer der Mode=OneWay?
Solltest mal auf TwoWay setzen.
SelectedItem="{Binding Wohnung, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
27.05.2014
judgy 3,0k 1 1 8
judgy 3,0k 1 1 8
Leider liegt es auch nicht daran. Das war auch mein erster Gedanke. Aber auch dann wird der Setter nicht ausgelöst.
GENiALi 02.06.2014

Stelle deine .net-Frage jetzt!