我有一個ItemsControl爲基本的組合框,文本框和按鈕的數組: WPF - 通過參數內的ItemsControl
的XAML對於底部均屬於ItemsControl的:(有問題與按鈕,最後一個元素)
<ItemsControl Grid.Row="2"
ItemsSource="{Binding CommandLinesOc}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Content="Send Command:"
HorizontalAlignment="Right"
Grid.Row="1" />
<ComboBox Grid.Column="1"
Grid.Row="1"
ItemsSource="{Binding ChromaCommandsCvs.View}"
SelectedItem="{Binding SelectedChromaCommand, UpdateSourceTrigger=PropertyChanged}" />
<Label Grid.Column="2"
Grid.Row="1"
Content="Parameter:"
HorizontalAlignment="Right" />
<TextBox Grid.Column="3"
Grid.Row="1"
Text="{Binding Parameter, UpdateSourceTrigger=PropertyChanged}" />
<Button Grid.Column="4"
DataContext="ChromaGUI.MainWindow"
Grid.Row="1"
Content="Send"
HorizontalAlignment="Center"
FontSize="15"
Command="{Binding RelativeSource=
{RelativeSource Mode=FindAncestor,
AncestorType={x:Type Window}},
Path=DataContext.SendMessageCommand}"
CommandParameter="{Binding FullCommandString}"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
正如你所看到的,我有綁定到一箇中繼命令按鈕元素。由於ItemsControl將數據上下文設置爲CommandLinesOc中的項目,因此必須使用主窗口相對源。
這一切工作正常 - 問題是CommandParameter似乎是繼承相同的相對源上下文,因爲我無法獲得FullCommandString(或可觀察集合中的項目之一的任何其他屬性,如Parameter或SelectedChromaCommand )解決任何事情。所以我的問題是,我可以(以及如何)將CommandParameter的數據上下文設置爲ItemsControl給我的內容,同時將Command的上下文保留爲父窗口?
這一行的按鈕定義什麼是:'的DataContext =「ChromaGUI.MainWindow」'? – Leandro
CommandParameter的datacontext是什麼('ChromaGUI.MainWindow')是 – Shoe
這就是問題所在,它是從嘗試獲取中繼命令上下文 – odkken