我正在尝试动态创建可编辑的列表视图。需要显示字符串数组作为源。当我们点击该项目时,它应该是可编辑的。
问题:没有错误但没有显示任何项目。
Style tableStyle = _resourceDictionary["TableStyle"] as Style;
ItemsPanelTemplate itemsPanelTemplate = _resourceDictionary["ItemsPanelTemplate"] as ItemsPanelTemplate;
FrameworkElementFactory factoryPanel = new FrameworkElementFactory(typeof(UniformGrid));
factoryPanel.SetValue(UniformGrid.ColumnsProperty, 5);
ItemsPanelTemplate template = new ItemsPanelTemplate();
template.VisualTree = factoryPanel;
ListView simpleTable = new ListView();
// simpleTable.Columns.Add(new DataGridTextColumn { Header = "Values" });
simpleTable.Style = tableStyle;
simpleTable.ItemsPanel = template;
_table = simpleTable;
string aa = "aa,xx,cc,vv,bbb,hh,gg,rr,tt,yy,uu,ooo";
_table.ItemsSource = aa.ToString().Split(',');
的Xaml
<Style x:Key="TableStyle" TargetType="{x:Type ListView}">
<Setter Property="Background" Value="{StaticResource ControlBackgroundBrush}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ListView}">
<ListView>
<ListView.View>
<GridView >
<GridViewColumn Header="Databases" Width="498">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding .}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
答案 0 :(得分:1)
如果您希望能够在表格网格中编辑数据,则应使用DataGrid控件。它基本上是一个可编辑的GridView
。
创建一个代表行的类:
public class Item
{
public string Value { get; set; }
}
并将ItemsSource
的{{1}}属性设置为此类对象的集合:
DataGrid
<强> XAML:强>
string aa = "aa,xx,cc,vv,bbb,hh,gg,rr,tt,yy,uu,ooo";
_table.ItemsSource = aa.Split(',').Select(x => new Item() { Value = x });
答案 1 :(得分:0)
我认为你使用的数据类型是错误的 如果您希望列表可以具有编辑功能,则应使用此情况下的observableCollection
答案 2 :(得分:0)
您正在第一个ListView
内创建另一个ControlTemplate
,这就是造成混淆的原因:
<ListView ItemsSource="{Binding EditableItems}" >
<ListView.View>
<GridView >
<GridViewColumn Header="Databases" Width="498">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding .}" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>