[英]wpf Listview with textbox error
我有一個帶有gridview單元格模板的listview作為文本框。
我可以在運行時在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循環完成,條目就會被覆蓋為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 { }
我找到了解決方案,但我仍然想知道為什么會發生..
這是解決方案:
for (int i = 0; i < TempList.Count; i++)
{
if (Order_TempList[i].txt == ((Items1)listview.SelectedItem).txt)
{
((Items1)listview.SelectedItem).txt = Order_TempList[i].txt;
i = TempList.Count;
}
}
我現在可以很清楚地看到錯誤了。 這是因為有兩個lists
並且正在更新visual list
(listview.Items),而不是physical list
(TempList)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.