silverlight-3.0 – Silverlight DataGrid从代码中更新SelectedItem

silverlight-3.0 – Silverlight DataGrid从代码中更新SelectedItem,第1张

概述当我从代码更新数据网格SelectedItem时(通过ViewModel中的绑定对象),如何让可视网格突出显示新选择的项目? 谢谢, 标记 更新:这对我来说仍然是一个问题.我的SelectedItem属性已经实现了更改通知,但是数据网格没有显示选择了哪一行 – 即它没有被突出显示. 我猜你确实已经验证了SelectedItem已经改变了(你可以暂时将Binding Mode设置为TwoWay以查看 当我从代码更新数据网格SelectedItem时(通过viewmodel中的绑定对象),如何让可视网格突出显示新选择的项目?

谢谢,
标记

更新:这对我来说仍然是一个问题.我的SelectedItem属性已经实现了更改通知,但是数据网格没有显示选择了哪一行 – 即它没有被突出显示.

解决方法 我猜你确实已经验证了SelectedItem已经改变了(你可以暂时将Binding Mode设置为TwoWay以查看它是否相反,通过单击你应该看到突出显示的行和SelectedItem的set-method执行).如果是,请验证您是否与PropertyChanged方法调用上的属性名称完全匹配.由于您在此处不是类型安全的,因此可能会出现拼写错误.如果不是,请检查您的数据绑定属性是否设置正确.另一个想法是,您可能已经更改了DataGrID的样式或模板,现在您缺少一些Visual状态.可以使用样式模板设置DataGrIDRow的样式.您有三个选定状态,称为UnfocusedSelected(可能是右侧),normalSelected和MouSEOverSelected.

您可以尝试使用此模板创建自己的Visual State:

<Style targettype="local:DataGrIDRow"><Setter Property="IsTabStop" Value="False" /><Setter Property="Template">    <Setter.Value>        <ControlTemplate targettype="local:DataGrIDRow">            <localprimitives:DataGrIDFroZenGrID name="Root">                <vsm:visualstatemanager.VisualStateGroups>                    <vsm:VisualStateGroup x:name="CommonStates">                        <vsm:VisualState x:name="normal"/>                    <vsm:VisualState x:name="normalAlternatingRow">                            <Storyboard>                                <DoubleAnimation Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="0"/>                            </Storyboard>                        </vsm:VisualState>                        <vsm:VisualState x:name="MouSEOver">                            <Storyboard>                                <DoubleAnimation Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To=".5"/>                            </Storyboard>                        </vsm:VisualState>                        <vsm:VisualState x:name="normalSelected">                            <Storyboard>                                <DoubleAnimation Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>                            </Storyboard>                        </vsm:VisualState>                        <vsm:VisualState x:name="MouSEOverSelected">                            <Storyboard>                                <DoubleAnimation Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>                            </Storyboard>                        </vsm:VisualState>                        <vsm:VisualState x:name="UnfocusedSelected">                            <Storyboard>                                <DoubleAnimation Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>                                <colorAnimation Duration="0" Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="(Fill).color" To="#FFE1E7EC"/>                            </Storyboard>                        </vsm:VisualState>                    </vsm:VisualStateGroup>                    <vsm:VisualStateGroup x:name="ValIDationStates">                        <vsm:VisualState x:name="ValID"/>                        <vsm:VisualState x:name="InvalID">                            <Storyboard>                                <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.Targetname="BackgroundRectangle" Storyboard.TargetProperty="Visibility">                                    <discreteObjectKeyFrame KeyTime="0" Value="Collapsed"/>                                </ObjectAnimationUsingKeyFrames>                                <DoubleAnimation Storyboard.Targetname="InvalIDVisualElement" Storyboard.TargetProperty="Opacity" Duration="0" To="1"/>                            </Storyboard>                        </vsm:VisualState>                    </vsm:VisualStateGroup>                </vsm:visualstatemanager.VisualStateGroups>                <GrID.RowDeFinitions>                    <RowDeFinition/>                    <RowDeFinition Height="auto"/>                    <RowDeFinition Height="auto"/>                </GrID.RowDeFinitions>                <GrID.ColumnDeFinitions>                    <ColumnDeFinition WIDth="auto" />                    <ColumnDeFinition/>                </GrID.ColumnDeFinitions>                <GrID.Resources>                    <Storyboard x:Key="DetailsVisibleTransition">                        <DoubleAnimation Storyboard.Targetname="DetailsPresenter" Storyboard.TargetProperty="ContentHeight" Duration="00:00:0.1" />                    </Storyboard>                </GrID.Resources>                <Rectangle x:name="BackgroundRectangle" GrID.rowspan="2" GrID.ColumnSpan="2" Opacity="0" Fill="#FFBADDE9"/>                <Rectangle x:name="InvalIDVisualElement" GrID.rowspan="2" GrID.ColumnSpan="2" Opacity="0" Fill="#FFF7D8DB"/>                <localprimitives:DataGrIDRowheader GrID.rowspan="3" name="Rowheader" localprimitives:DataGrIDFroZenGrID.IsFroZen="True" />                <localprimitives:DataGrIDCellsPresenter GrID.Column="1" name="CellsPresenter" localprimitives:DataGrIDFroZenGrID.IsFroZen="True" />                <localprimitives:DataGrIDDetailsPresenter GrID.Row="1" GrID.Column="1" name="DetailsPresenter" />                <Rectangle GrID.Row="2" GrID.Column="1" name="BottomGrIDline" HorizontalAlignment="Stretch" Height="1" />            </localprimitives:DataGrIDFroZenGrID>        </ControlTemplate>    </Setter.Value></Setter></Style>

这是一个关于自定义DataGrID样式的好的MSDN Article的复制粘贴.例如,您可以修改模板的UnfocusedSelected部分,看看是否看到任何更改,例如,在其周围添加红色边框等.

也许这值得一试.我希望你知道如何应用自己的风格.如果没有,这是另一个MSDN Resource.

我知道,这些只是提示,但最后可能会有所帮助.

总结

以上是内存溢出为你收集整理的silverlight-3.0 – Silverlight DataGrid从代码中更新SelectedItem全部内容,希望文章能够帮你解决silverlight-3.0 – Silverlight DataGrid从代码中更新SelectedItem所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1000919.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存