仍然在使用web/MVC中的背景來處理WPF。我已經實現了一些在UI場景中很常見的東西,重複的項目列表以及一些控件,以允許用戶對這些項目執行操作(我省略了一些綁定,因爲它們是長的relativeSource指令,它們是無關的問題):WPF MVVM - 重複組合框,將selectedItem傳遞給參數
<ItemsControl ItemsSource="{Binding Counts}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox ItemsSource="{}" DisplayMemberPath="Description"></ComboBox>
<Button Command="{}" Content="Add></Button>
<TextBlock VerticalAlignment="Center">
<Run Text="{Binding Path=Date, StringFormat=dd/MM/yyyy}"></Run>
<Run Text=" - "></Run>
<Run Text="{Binding Name}"></Run>
</TextBlock>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
正如你所看到的,組合框沒有實現的SelectedValue或SelectedValuePath - 它真的不能綁定到一個ViewModel屬性,因爲它是重複計數中的每個項目。所以目前它只是列出了可能的值。
Button命令綁定回ViewModel上的命令。然而,爲了做按鈕上的任何事情,我需要將參數傳遞到命令中 - 即Button綁定到的項目的ID,以及用戶在與此按鈕配對的特定ComboBox中選擇的任何內容。
ID很簡單 - 我可以爲它綁定一個CommandParameter。但是,如何將選定的ComboBox ID傳遞給該函數,以及如何確保它是來自成對ComboBox的ID?
編輯:稍微進一步的研究表明,雖然傳遞一個CommandParameter是直截了當,傳遞兩個不是。我看到涉及轉換器的答案,但在這種情況下,我的兩個參數來自不同的來源,所以我不能這樣做。幫助如何通過這兩個也將不勝感激。
您是否嘗試過ElementName綁定? – user3455395
不,我推測它會失敗,因爲ComboBox在ItemsControl中,所以每個ComboBox都具有相同的Name屬性。情況並非如此嗎? –
有一個命名範圍的概念,名稱必須是唯一的,因爲它的命名範圍。 – user3455395