簡體   English   中英

WPF的ListView與文本框錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM