我在WPF中有一個ListView的問題。 我的程序有兩個ListView控件:一個使用數據綁定與ObservableCollection綁定,該ObservableCollection位於我的窗口內,另一個綁定到第一個集合的每個項目內的ObservableCollection。從CellTemplate到ListViewItem數據的數據綁定
像這樣:
public class Fitosanitario : DBData
{
private ObservableCollection<Dosaggio> _dosaggi;
public ObservableCollection<Dosaggio> Dosaggi { set { _dosaggi = value; } get { return _dosaggi; } }
...
}
public class Dosaggio : DBData
{
private int _idColtura;
public int IDColtura
{
get { return _idColtura; }
set { _idColtura = value; }
}
...
}
而且,這兩個名單的定義是這樣的:
我的窗口內的ObservableCollection第一ListView中的數據綁定到
private ObservableCollection<Fitosanitario> _fitosanitari;
public ObservableCollection<Fitosanitario> Fitosanitari
{
get { return _fitosanitari; }
}
XAML爲先ListView
<ListView Grid.Row="1" Margin="5" Name="lstProdottiFito">
<ListView.View>
<GridView>
<GridViewColumn Header="Nome" Width="120" DisplayMemberBinding="{Binding Nome}" />
<GridViewColumn Header="Quantità" Width="80" DisplayMemberBinding="{Binding Quantita}" />
<GridViewColumn Header="Descrizione" Width="135" DisplayMemberBinding="{Binding Descrizione}" />
</GridView>
</ListView.View>
</ListView>
XAML第二的ListView
<ListView Grid.Column="2" Margin="5" ItemsSource="{Binding SelectedItem.Dosaggi, ElementName=lstProdottiFito}" x:Name="lstDosaggi">
...
</ListView>
一切工作正常現在。我的問題是第二個ListView必須是可編輯的,並且爲了這樣做,我已經以這種方式自定義了其用於eact GridColumn的CellTemplate(帶有一些觸發器來啓用和禁用編輯)(這是第一列的示例但thay're全部相等):
<GridViewColumn Header="IDColtura" Width="80">
<GridViewColumn.CellTemplate>
<DataTemplate>
<ContentControl>
<ContentControl.Style>
<Style TargetType="{x:Type ContentControl}">
<Style.Triggers>
<DataTrigger Binding="{Binding InEditing}" Value="False">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding IDColtura}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding InEditing}" Value="True">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBox Text="{Binding IDColtura, Mode=OneWay}"/>
</DataTemplate>
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</ContentControl.Style>
</ContentControl>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
而且從「編輯模式」和「正常模式」工作的切換,問題是無論是文本框或文本框顯示文本。 我試過每種類型的DataBinding,但我無法讓它工作。
有沒有人有想法?
我很抱歉我已經這麼久了,但我不知道如何解釋它。
謝謝大家! :)
它是什麼:在第二個ListView XAML defenition中的SelectedItem.Dosaggi?可能它應該是'SelectedItem'只? – Jasper
SelectedItem指向第一個ListView中選擇的項目,在我的案例中,它屬於Fitosanitario類型。因此SelectedItem.Dosaggi指向了Fitosanitario類中的ObservableCollecation calles「Dosaggi」。 如果我只將SelectedItem而不是SelectedItem.Dosaggi,第二個列表始終爲空。 – zeb