Hallo allerseits,
ich möchte den Hintergrund für alle DataGrids per Style setzen:
<Style TargetType="{x:Type DataGrid}">
<Setter Property="Background">
<Setter.Value>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<StackPanel>
<Label Content="Huhu"/>
<Label Content="{Binding Path=TestProperty}" />
</StackPanel>
</VisualBrush.Visual>
</VisualBrush>
</Setter.Value>
</Setter>
</Style>
Ein DataGrid wird dann wie folgt eingebunden (stark verkürzt):
<UserControl>
<!-- ... -->
<DataGrid
ItemsSource="{Binding ItemListView}"
SelectedItem="{Binding SelectedItem}">
<DataGrid.Columns>
<!-- ... -->
</DataGrid.Columns>
</DataGrid>
</UserControl>
Das UserControl hat als DataContext ein ViewModel:
public class MyViewModel
{
public ListCollectionView ItemListView { get; protected set; }
public object SelectedItem { get; set; }
public string TestProperty => "Blub";
// ....
}
Problem: das Label mit dem Text "Huhu" wird angezeigt, das zweite Label bleibt leer. Es scheint, dass das Binding auf TestProperty
nicht aufgelöst werden kann. Eine Fehlermeldung wird nicht ausgegeben.
Bindings, welche direkt im XAML des UserControls verwendet werden, funktionieren (ItemListView
, SelectedItem
).
Wie kann ich im Style dafür sorgen, dass der "richtige" DataContext verwendet wird?
Gruß
Eine Fehlermeldung wird nicht ausgegeben.
Bei Binding-Problemen lohnt sich immer ein Blick in den Output, da findet man meistens Informationen.
Zum Problem: bin mir nicht 100%ig sicher, ob es überhaupt funktioniert, aber wenn dann am ehesten mit dem Schlagwort RelativeSource
.