Vì vậy, ví dụ tôi có một số ứng dụng MVVM WPF với mô hình đơn giản:Tại sao tôi không thể sử dụng DynamicResource với DataGridColumn.CellStyle
public class MyObject
{
public string F1 { get; set; }
public string F2 { get; set; }
}
và mô hình nhìn đơn giản mà tạo ra 3 dòng:
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"}
};
}
}
Và theo quan điểm, tôi có một số DataGrid
với các cột được xác định theo cách thủ công và cho mỗi cột, tôi đặt CellStyle
. Cả hai kiểu được xác định trong khối Window.Resources
. Nhưng đối với cột đầu tiên, tôi sử dụng StaticResource
và cho phần thứ hai DynamicResource
Xem 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>
Vì vậy, vấn đề là: trong cột thứ hai, các nguồn tài nguyên không được áp dụng cho các cột.
Điều này có vẻ như hành vi mong đợi đối với tôi? Bạn có thể làm rõ những gì bạn cảm thấy vấn đề? – MoonKnight
Vấn đề là 'CellStyle' là một' DependencyProperty', nhưng khi tôi cố gắng sử dụng ràng buộc trong nó, nó không hoạt động. Rõ ràng họ đã làm cho nó 'DependencyProperty' vì một lý do. – Envilogger
Điều gì sẽ xảy ra nếu bạn di chuyển kiểu BaseCellClass sang tài nguyên Ứng dụng của mình (hoặc một vị trí khác được tải trước khi 'Cửa sổ' được khởi tạo)? –