首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UWP Datagrid

UWP Datagrid
EN

Stack Overflow用户
提问于 2019-08-15 05:58:03
回答 2查看 1.3K关注 0票数 2

怎么才能在UWP里排成一排呢?我在WPF中找到了解决方案,但是UWP似乎没有这些选择。

我不是在问关于SelectedItem的事。

例如,我有一个数据存储显示一个音乐库。我想突出显示正在播放音乐的一排。我如何在c#或使用xaml中做到这一点?

我试过使用样式和转换器,但我不知道该绑定什么。

DataGrid的项源是public static List<Music>对象。

代码语言:javascript
复制
    <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>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-25 03:17:08

由于@Faywang的答案here,我已经意识到,虽然没有直接的方法在DataGrid中获得一行,但解决办法可能是给ViewModel一个属性,并使用一个转换器来实现您想要的结果。

这个问题提供了一个ListView的例子,但想法是一样的。

票数 0
EN

Stack Overflow用户

发布于 2020-02-18 11:03:18

为已故的人感到抱歉,但也许它能帮助未来的人。

我也有这个问题。我想高亮显示一些数据被更改或出现错误的行。

我发现,使用DataGrid.LoadingRow事件,您可以在行实例化之前访问它,并更改一些属性:

代码语言:javascript
复制
dataGrid.LoadingRow += DataGrid_LoadingRow;
private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
{
    if ((e.Row.DataContext as string).Length == 0)
            e.Row.Background = new SolidColorBrush(Colors.Blue);
}

如果行已经被实例化,并且无法重新加载它们,那么这个解决方案就没有那么有用。我希望这能帮到别人

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57505406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档