Tak więc, na przykład mam jakąś aplikację MVVM WPF z prostego modeluDlaczego nie mogę korzystać z DynamicResource DataGridColumn.CellStyle
public class MyObject
{
public string F1 { get; set; }
public string F2 { get; set; }
}
i prostego modelu widoku, który tworzy 3 rzędy:
public class MyViewModel
{
public ObservableCollection<MyObject> Objects { get; set; }
public MyViewModel()
{
Objects = new ObservableCollection<MyObject>
{
new MyObject{F1 = "V1",F2 = "B1"},
new MyObject{F1 = "V2",F2 = "B2"},
new MyObject{F1 = "V3",F2 = "V3"}
};
}
}
A w widoku Mam DataGrid
z ręcznie zdefiniowanymi kolumnami i dla każdej kolumny ustawiam CellStyle
. Oba style zdefiniowane w bloku Window.Resources
. Ale dla pierwszej kolumny, używam StaticResource
a drugiej DynamicResource
View XAML:
<Window x:Class="WpfApplication12.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525" x:Name="WholeWindow">
<Window.Resources>
<Style x:Key="BaseCellClass" TargetType="DataGridCell">
<Setter Property="Foreground" Value="Blue" />
</Style>
</Window.Resources>
<Grid>
<DataGrid AutoGenerateColumns="False" ItemsSource="{Binding ElementName=WholeWindow, Path=ViewModel.Objects}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding F1}" Header="F1" CellStyle="{StaticResource BaseCellClass}" />
<DataGridTextColumn Binding="{Binding F2}" Header="F2" CellStyle="{DynamicResource BaseCellClass}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
Więc problem jest: w drugiej kolumnie, zasób nie stosuje się do kolumna.
To wygląda jak oczekiwane zachowanie do mnie? Czy możesz wyjaśnić, na czym polega problem? – MoonKnight
Problem polega na tym, że 'CellStyle' jest' DependencyProperty', ale gdy próbuję użyć wiązania, nie działa. Najwyraźniej utworzyli oni 'DependencyProperty' z jakiegoś powodu. – Envilogger
Co się stanie, jeśli przeniesiesz styl BaseCellClass do zasobów aplikacji (lub innej lokalizacji, która jest ładowana przed zainicjowaniem 'okna')? –