首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在UI中显示/隐藏UWP RadDataGrid行的控件

在UI中显示/隐藏UWP RadDataGrid行的控件
EN

Stack Overflow用户
提问于 2018-01-23 23:26:07
回答 1查看 388关注 0票数 0

我有一个用于UWP RadDataGrid的简单的Telerik用户界面:

代码语言:javascript
复制
    <telerikGrid:RadDataGrid ItemsSource="{x:Bind MyVM.Items}"
                             SelectedItem="{x:Bind MyVM.SelectedItem, Mode=TwoWay}"
                             UserEditMode="None"
                             AutoGenerateColumns="False"
                             UserGroupMode="Disabled"
                             UserFilterMode="Disabled"
                             GridLinesThickness="1"
                             AlternationStep="2">
        <telerikGrid:RadDataGrid.Columns>
            <telerikGrid:DataGridTemplateColumn Header="Column1" SizeMode="Fixed" Width="200">
                <telerikGrid:DataGridTemplateColumn.CellContentTemplate>
                    <DataTemplate x:DataType="vm:MyViewModel">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <TextBlock Grid.Column="0" Text="{x:Bind Text1}" />
                            <AppBarButton Grid.Column="1" Icon="Edit" Visibility="???" />
                        </Grid>
                    </DataTemplate>
                </telerikGrid:DataGridTemplateColumn.CellContentTemplate>
            </telerikGrid:DataGridTemplateColumn>

            <telerikGrid:DataGridTextColumn PropertyName="Prop1" Header="Column1" />
            <telerikGrid:DataGridTextColumn PropertyName="Prop2" Header="Column2" />
        </telerikGrid:RadDataGrid.Columns>
    </telerikGrid:RadDataGrid>

MyVM是一个MyViewModel类型的ViewModel,它具有Text1Prop1Prop2属性。我想动态地显示/隐藏第一列中的AppBarButton。当用户通过单击选择行时,我希望显示该按钮。当行未被选中时,我想隐藏该按钮。

在UWP、XAML和RadDataGrid中有什么方法可以做到这一点吗?我想我必须绑定按钮的Visibility属性(代码中的问号),但是如何绑定呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 00:47:16

首先,您需要为每个项目添加一个EditVisibility属性:

代码语言:javascript
复制
private Visibility _visibility = Visibility.Collapsed;
public Visibility EditVisibility
{
   get => _visibility;
   set
   {
       _visibility = value;
       NotifyPropertyChanged();
   }
}

现在,您已经绑定了SelectedItem属性,所以我们将功能插入其中。一旦用户单击某行,该行就会变为选中状态。这意味着将执行SelectedItem属性的set块。

在设置器中,您可以首先将先前选定行的EditVisibility设置为Collapsed,然后将新行的Visibility设置为Visible

代码语言:javascript
复制
set
{
   if ( _selectedItem != null ) _selectedItem.EditVisibility = Visibility.Collapsed;
   _selectedItem = value;
   _selectedItem.EditVisibility = Visibility.Visible;
   NotifyPropertyChanged();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48405247

复制
相关文章

相似问题

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