【发布时间】:2019-12-21 15:26:18
【问题描述】:
如何在 UWP 中获得一行?我在 WPF 中找到了解决方案,但 UWP 似乎没有这些选项。
我不是在问SelectedItem。
例如,我有一个显示音乐库的数据网格。我想突出显示正在播放其音乐的行。如何在 c# 或使用 xaml 中做到这一点?
我尝试过使用 Style 和转换器,但我不知道要绑定什么。
DataGrid 的项目源是一个public static List<Music> 对象。
<controls:DataGrid
x:Name="MusicLibraryDataGrid"
Grid.Row="1"
Margin="10"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
AlternatingRowBackground="WhiteSmoke"
AlternatingRowForeground="Gray"
AreRowDetailsFrozen="False"
AreRowGroupHeadersFrozen="True"
AutoGenerateColumns="False"
CanUserReorderColumns="True"
CanUserResizeColumns="True"
CanUserSortColumns="True"
ColumnHeaderHeight="32"
DoubleTapped="MusicLibraryDataGrid_DoubleTapped"
Foreground="Black"
FrozenColumnCount="0"
GridLinesVisibility="None"
HeadersVisibility="Column"
HorizontalScrollBarVisibility="Visible"
IsDoubleTapEnabled="True"
IsReadOnly="False"
ItemsSource="{Binding AllSongs}"
MinColumnWidth="100"
SelectionMode="Extended"
Sorting="MusicLibraryDataGrid_Sorting"
VerticalScrollBarVisibility="Visible">
<controls:DataGrid.Columns>
// Some code
</controls:DataGrid.Columns>
<controls:DataGrid.RowStyle>
<Style TargetType="controls:DataGridRow">
<Setter Property="Foreground" Value="{Binding Music, Converter={StaticResource DataGridRowColorConverter}}" />
</Style>
</controls:DataGrid.RowStyle>
</controls:DataGrid>
【问题讨论】:
-
看看这个thread会有帮助
-
@PavelAnikhouski。我认为这仅适用于普通的 Grid 控件,不适用于 DataGrid 控件...
-
你想要的很难实现。好像没有提供获取每一项的API,所以无法绑定后台。如果你还想实现效果,我推荐你可以使用ListView,然后在viewmodel中用一个属性绑定背景(比如isActive),当你想要高亮背景的时候,设置属性为true,然后使用convert突出显示背景颜色。
-
听到 WPF 提供了这样的 api 真是令人沮丧...@Faywang-MSFT
-
是的,为了更好的自定义,最好使用ListView。