【发布时间】:2015-04-22 09:09:22
【问题描述】:
我有一个带有 gridview 单元格模板的列表视图,作为文本框。
我可以在运行时更改 ui 中的 itemssource,但我不能这样做,在代码后面..
请任何想法为什么会不胜感激。
它绑定到自定义列表。
这是我目前的代码:
Xaml 模板。
<Style TargetType="{x:Type TextBlock}" x:Key="GridBlockStyle">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Visibility" Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Converter={StaticResource boolToVis}, ConverterParameter=False}" />
</Style>
<Style TargetType="{x:Type FrameworkElement}" x:Key="GridEditStyle">
<Setter Property="VerticalAlignment" Value="Center" />
<Setter Property="Visibility" Value="{Binding Path=IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Converter={StaticResource boolToVis}, ConverterParameter=True}" />
</Style>
<DataTemplate x:Key="txt_Field" DataType="{x:Type GridViewColumn}">
<Grid>
<TextBlock Text="{Binding Path=txt}" Style="{StaticResource GridBlockStyle}"/>
<TextBox Style="{StaticResource GridEditStyle}" Text="{Binding Path=txt}"/>
</Grid>
</DataTemplate>
后面的代码:
DataTemplate t_txt = (DataTemplate)window.FindResource("txt_Field");
gridView.Columns.Add(new GridViewColumn { Header = "txt", CellTemplate = t_txt });
它会更新 itemssource,一旦 foreach 循环完成,Entries 就会被覆盖为 null。
try
{
foreach (Items1 item in TempList)
{
foreach (Items1 item2 in list)
{
if (item.num == item2.num)
{
item2.txt = item.txt;
}
}
}
listview.Items.Refresh();
}
catch { }
【问题讨论】: