【发布时间】:2011-11-22 22:47:20
【问题描述】:
我正在使用 MVVM Light Toolkit,并且我有一个绑定到 ObservableCollection 的 DataGrid。仅显示一个文本列。我希望单元格的文本为粗体或正常,具体取决于显示的对象内部的布尔值。我想我可以使用 RelayCommands,但它们只需要 1 个参数,我需要至少 2 个参数来获取 CellContent(DataGridRowEventArgs 和 DataGrid 本身)。我试图在“LoadingRow”事件上触发 RelayCommand Execute 委托,但只有一个参数我做不到。
这是 XAML 中的 DataGrid:
<DataGrid x:Name="dataGrid1" HorizontalAlignment="Left" Margin="112,34,0,8" Width="100" IsReadOnly="True" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserSortColumns="False" CanUserResizeRows="False" ItemsSource="{Binding CurrentNewsList}" AutoGenerateColumns="False" SelectedIndex="0">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Title}" MinWidth="92" Width="Auto" FontFamily="Segoe UI" Foreground="Black" FontWeight="{Binding CurrentNewsList[0].MyFont}"/>
</DataGrid.Columns>
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<Custom:EventToCommand Command="{Binding NewsSelectedCommand}" CommandParameter="{Binding SelectedIndex, ElementName=dataGrid1}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</DataGrid>
我在 Blend 中设置了网格。请注意,FontWeight 的绑定类似于“{Binding CurrentNewsList[0].MyFont}”。这样对吗 ?我也尝试了“{Binding MyFont}”,但都得到了相同的结果:No BOld :(
MyFont 在 Object 构造函数中设置为布尔值:
MyFont = newIsRead ? FontWeights.Normal : FontWeights.Bold;
请帮忙。
谢谢
【问题讨论】:
-
布尔值是否改变,需要更新字体样式,还是总是粗体/正常?
标签: c# wpf xaml datagrid mvvm-light