使用 DataTempülate 创建可编辑的 GridviewColumn
Posted
技术标签:
【中文标题】使用 DataTempülate 创建可编辑的 GridviewColumn【英文标题】:Creating editable GridviewColumn with DataTempülate 【发布时间】:2021-03-28 15:26:20 【问题描述】:我有一个通过 ItemsSource 属性绑定到我的 ListView 的可观察集合。 我使用 GridView 来呈现 ListView 中的项目。 通过在我的 ViewModel 中将“IsServiceMode”属性设置为“true”(DataContext 到包含 ListView 的 UserControl),我想将 GridViewColumn 更改为使用 TextBox 而不是 Textblock。 我正在使用带有 ContentControl 和 DataTemplate 的 CellTemplates,如 here 所述
但是,尽管编辑器建议“位置”,但文本块和文本框控件中的“绑定位置”似乎不起作用。 Position 是绑定的 ObservableCollection 中项目的属性,可以通过 DisplayMemberBinding 毫无问题地使用。
我的 GridViewColumn
<GridViewColumn Header="Position">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="x:Type ContentControl">
<Style.Triggers>
<DataTrigger Binding="Binding DataContext.IsServiceMode, RelativeSource=RelativeSource AncestorType=UserControl" Value="False">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="Binding Position, diag:PresentationTraceSources.TraceLevel=High"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="Binding DataContext.IsServiceMode, RelativeSource=RelativeSource AncestorType=UserControl" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="Binding Position"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>´´´
【问题讨论】:
您可以使用文本框并将只读甚至启用的属性绑定到 IsServiceMode,而不是所有这些?它还会大大简化您的 xaml。 @XAMlMAX 是的,但文本框看起来不同。 【参考方案1】: Datagrid 带有编辑模式。 IsReadOnly 处于打开和关闭状态。 itemSource 必须在启用编辑模式时实现 INotifyCollectionChanged。就像 ObservableCollection 一样演示
<DataGrid
x:Name="DataGrid1"
ItemsSource="Binding Path=ObservableCollection"
IsReadOnly="Binding Path=IsServiceMode" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Position" Binding="Binding Path=Position,Mode=TwoWay"/>
</DataGrid.Columns>
</DataGrid>
【讨论】:
以上是关于使用 DataTempülate 创建可编辑的 GridviewColumn的主要内容,如果未能解决你的问题,请参考以下文章
Flutter 创建 API 请求并接收带有 - 'Ä' 'Ö' 'Ü' 'ß' 的字符串
Late April|Blockchain and Beauty