Итак, например, у меня есть приложение MVVM WPF с простой моделью:
public class MyObject
{
public string F1 { get; set; }
public string F2 { get; set; }
}
и простая модель представления, которая создает 3 строки:
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"}
};
}
}
И у меня есть DataGrid
с определенными вручную столбцами, и для каждого столбца я устанавливаю CellStyle
. Оба стиля определены в блоке Window.Resources
. Но для первого столбца я использую StaticResource
, а для второго DynamicResource
Просмотр 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>
So the problem is: in the second column, the resource doesn't get applied to the column.
CellStyle
этоDependencyProperty
, но когда я пытаюсь использовать в нем привязку, это не работает. Очевидно, они сделали этоDependencyProperty
не просто так. - person Envilogger   schedule 04.07.2013Window
)? - person Brian S   schedule 04.07.2013Converters
,DynamicResource
бесполезно. - person Anatoliy Nikolaev   schedule 05.07.2013StaticResource
будет работать нормально, но в моем случае мне нужно использоватьDynamicResource
. Этот пример кода я сделал только для того, чтобы проиллюстрировать проблему. В нашем реальном приложении цель состоит в том, чтобы использоватьDynamicResource
, чтобы иметь возможность изменять стили на лету. Во всяком случае, я думаю, что это невозможно с базовой реализацией DataGridColumn, и я ищу другие способы - person Envilogger   schedule 05.07.2013