我試圖用一個右鍵單擊contextmenu來綁定一個listview到List<OrderPaymentVm> OrderPayments
得到PaymentTransactionId
。如何綁定一個帶有contextMenu的WPF ListView來查看Model
我在表格下面的屬性視圖模型
public List<OrderPaymentVm> OrderPayments
{
get
{
return _orderPayments;
}
private set
{
_orderPayments = value;
RaisePropertyChanged(() => OrderPayments);
}
}
視圖模型
public class OrderPaymentVm : ViewModelBase
{
private RelayCommand _copyPaymentTransactionId;
public DateTime PaymentTime { get; set; }
public PaymentType PaymentType { get; set; }
public string Explanation { get; set; }
public string PaymentTransactionId { get; set; }
public decimal Amount { get; set; }
public RelayCommand CopyPaymentTransactionId
{
get { return _copyPaymentTransactionId ?? (_copyPaymentTransactionId = new RelayCommand(ExecuteCopyPaymentTransactionId)); }
}
private void ExecuteCopyPaymentTransactionId()
{
Clipboard.SetText(string.IsNullOrWhiteSpace(PaymentTransactionId) ? string.Empty : PaymentTransactionId);
}
}
我有下面的XAML
<ListView Grid.Row="1" ItemsSource="{Binding OrderPayments}" HorizontalAlignment="Stretch" Margin="0,0,0,1">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Copy Transaction Id"
Command="{Binding CopyPaymentTransactionId}"
CommandParameter="{Binding RelativeSource={RelativeSource AncestorType=ContextMenu}, Path=PlacementTarget.SelectedItem}" />
</ContextMenu>
</ListView.ContextMenu>
<ListView.View>
<GridView>
<GridViewColumn HeaderContainerStyle="{StaticResource HeaderLeftAlign}" Header="Transaction Id" Width="150" DisplayMemberBinding="{Binding PaymentTransactionId}" />
<GridViewColumn HeaderContainerStyle="{StaticResource HeaderLeftAlign}" Header="Time" Width="150" DisplayMemberBinding="{Binding PaymentTime}" />
<GridViewColumn HeaderContainerStyle="{StaticResource HeaderLeftAlign}" Header="Payment Type" Width="100" DisplayMemberBinding="{Binding PaymentType}" />
<GridViewColumn HeaderContainerStyle="{StaticResource HeaderLeftAlign}" Header="Amount" Width="80" DisplayMemberBinding="{Binding Amount, StringFormat='{}{0:C}'}" />
<GridViewColumn HeaderContainerStyle="{StaticResource HeaderLeftAlign}" Header="Explanation" Width="280" DisplayMemberBinding="{Binding Explanation}" />
</GridView>
</ListView.View>
</ListView>
問題1個 的XAML設計說有一個問題EM與GridViewColumn綁定,它強調他們並說,它無法解析屬性,但它編譯和工作正常
問題2 的ConextMenu命令未命中視圖模型命令RelayCommand CopyPaymentTransactionId
我敢肯定,這些都是很簡單然而,即使我正在旋轉我的車輪,有沒有人有任何建議?
謝謝
XAML設計人員經常對我說謊有關錯誤。我通常通過在運行時查看輸出窗口來驗證綁定。關於你的命令綁定,我也遇到了命令綁定不觸發的問題。因此,我勉強地寫代碼隱藏來處理點擊事件,並在稍後允許的時候爲重構機會留下筆記。 – 2014-09-11 02:11:41
嘗試使用視圖模型構造函數中的相應委託賦值來初始化您的中繼命令。 – 2014-09-11 02:15:29
感謝您的意見,是啊我覺得即時通訊被騙到問題1 – 2014-09-11 02:18:29