我有一个用于UWP RadDataGrid的简单的Telerik用户界面:
<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,它具有Text1、Prop1和Prop2属性。我想动态地显示/隐藏第一列中的AppBarButton。当用户通过单击选择行时,我希望显示该按钮。当行未被选中时,我想隐藏该按钮。
在UWP、XAML和RadDataGrid中有什么方法可以做到这一点吗?我想我必须绑定按钮的Visibility属性(代码中的问号),但是如何绑定呢?
发布于 2018-01-24 00:47:16
首先,您需要为每个项目添加一个EditVisibility属性:
private Visibility _visibility = Visibility.Collapsed;
public Visibility EditVisibility
{
get => _visibility;
set
{
_visibility = value;
NotifyPropertyChanged();
}
}现在,您已经绑定了SelectedItem属性,所以我们将功能插入其中。一旦用户单击某行,该行就会变为选中状态。这意味着将执行SelectedItem属性的set块。
在设置器中,您可以首先将先前选定行的EditVisibility设置为Collapsed,然后将新行的Visibility设置为Visible
set
{
if ( _selectedItem != null ) _selectedItem.EditVisibility = Visibility.Collapsed;
_selectedItem = value;
_selectedItem.EditVisibility = Visibility.Visible;
NotifyPropertyChanged();
}https://stackoverflow.com/questions/48405247
复制相似问题